출처 : http://cafe.naver.com/tjdc/445
// 이 클래스는 m_hDWMApi 핸들이 유효할때 까지 적용된다.
// EnableComposition 기능은 이 클래스가 소멸되면 자동으로 원상태로 돌아간다.
class CDWMApiDll
{
typedef HRESULT (CALLBACK * pfDwmIsCompositionEnabled)(BOOL *pbEnabled);
typedef HRESULT (CALLBACK * pfDwmEnableComposition) (BOOL bEnable);
public:
CDWMApiDll()
{
m_hDWMApi = NULL;
f_IsEnabled = NULL;
f_Enable = NULL;
};
virtual ~CDWMApiDll()
{
if(m_hDWMApi != NULL)
{
::FreeLibrary(m_hDWMApi);
m_hDWMApi = NULL;
}
};
//////////////////////////////////////////////////////////////////////////
// Load dwmapi.dll
BOOL Load_DWMAPIDll()
{
m_hDWMApi = ::LoadLibrary("dwmapi.dll");
if(m_hDWMApi == NULL) return FALSE;
f_IsEnabled = (pfDwmIsCompositionEnabled)::GetProcAddress(m_hDWMApi, "DwmIsCompositionEnabled");
f_Enable = (pfDwmEnableComposition) ::GetProcAddress(m_hDWMApi, "DwmEnableComposition");
return TRUE;
};
// Check Composition Aero 기능이 설정되어 있으면 TRUE 반환.
BOOL IsCompositionEnabled()
{
BOOL bEnabled = FALSE;
if(f_IsEnabled == NULL) return FALSE;
HRESULT hr;
hr = f_IsEnabled(&bEnabled);
if(SUCCEEDED(hr) && (bEnabled == TRUE))
{
return TRUE;
}
else
return FALSE;
};
// Aero 기능을 ON/OFF 시킨다.
HRESULT EnableComposition(BOOL bEnable = FALSE)
{
if(f_Enable == NULL || f_IsEnabled == NULL) return E_FAIL;
return f_Enable(bEnable);
};
private:
HINSTANCE m_hDWMApi;
pfDwmIsCompositionEnabled f_IsEnabled;
pfDwmEnableComposition f_Enable;
};
클래스 사용 방법 입니다. 간단하게 Aero기능이 설정 되어 있으면 설정해제 시키는 부분입니다.
// 선언부
CDWMApiDll m_dwmapiDll;
// 구현부
if(IsVistaOS()) // Vista인지 체크
{
if(m_dwmapiDll.Load_DWMAPIDll())
{
if(m_dwmapiDll.IsCompositionEnabled())
{
m_dwmapiDll.EnableComposition(FALSE);
}
}
}
'MS > Windows7' 카테고리의 다른 글
Off the Aero theme in Windows7 (0) | 2010.06.29 |
---|