/*
CVSNT Generic API - Activate XP controls
Copyright (C) 2004 Tony Hoyle and March-Hare Software Ltd
Probably public domain. From google groups.
*/
/* _EXPORT */
#ifndef MANIFEST__H
#define MANIFEST__H
#ifdef __AFXWIN_H__
class CActivateManifest
{
public:
CActivateManifest() : m_ulActivationCookie(0), m_hActCtx(0)
{
BOOL bRet = Init();
if (bRet && m_hActCtx && (INVALID_HANDLE_VALUE != m_hActCtx))
ActivateActCtx(m_hActCtx, &m_ulActivationCookie);
}
virtual ~CActivateManifest()
{
if (m_hActCtx && (m_hActCtx!= INVALID_HANDLE_VALUE))
{
DeactivateActCtx(0, m_ulActivationCookie);
ReleaseActCtx(m_hActCtx);
}
}
private:
ULONG_PTR m_ulActivationCookie;
HANDLE m_hActCtx;
BOOL Init()
{
BOOL bRet = FALSE;
BOOL bTemp = FALSE;
OSVERSIONINFO info = { 0 };
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
bTemp = GetVersionEx(&info);
if (bTemp)
{
//do special XP theme activation code only on XP or higher...
if ( (info.dwMajorVersion >= 5) ||
(info.dwMajorVersion == 5 && (info.dwMinorVersion >= 1)) &&
(info.dwPlatformId == VER_PLATFORM_WIN32_NT))
{
ACTCTX actctx = {0};
TCHAR szModule[MAX_PATH] = {0};
HINSTANCE hinst = AfxGetInstanceHandle();
::GetModuleFileName(hinst, szModule, MAX_PATH);
actctx.cbSize = sizeof(ACTCTX);
actctx.dwFlags = ACTCTX_FLAG_HMODULE_VALID |
ACTCTX_FLAG_RESOURCE_NAME_VALID;
actctx.lpSource = szModule;
actctx.lpResourceName = MAKEINTRESOURCE(2);
actctx.hModule = hinst;
m_hActCtx = ::CreateActCtx(&actctx);
if (INVALID_HANDLE_VALUE != m_hActCtx)
bRet = TRUE;
}
}
return bRet;
}
};
#endif
#endif
syntax highlighted by Code2HTML, v. 0.9.1