NC領域塗装を無効にしてみることができます。以下のような
何か:
#include <dwmapi.h>
...
HRESULT hr = E_FAIL;
if (IsVistaOrAbove())
{
DWMNCRENDERINGPOLICY ncrp = DWMNCRP_DISABLED;
hr = ::DwmSetWindowAttribute(m_hWnd, DWMWA_NCRENDERING_POLICY, &ncrp, sizeof(ncrp));
ASSERT(SUCCEEDED(hr));
}
しかし、それはまた、窓にエアロを無効にします。
したがって、境界にないクライアント領域に点滅を表示する方が簡単です。
XPの互換性のため
UPDATED、あなたはこのようにDWM APIを使用する必要があります。
typedef HRESULT (WINAPI *pfnDwmIsCompositionEnabled)(BOOL *pfEnabled);
static pfnDwmIsCompositionEnabled s_DwmIsCompositionEnabled;
typedef HRESULT (WINAPI *pfnDwmSetWindowAttribute)(HWND hwnd, DWORD dwAttribute, LPCVOID pvAttribute, DWORD cbAttribute);
static pfnDwmSetWindowAttribute s_DwmSetWindowAttribute;
typedef HRESULT (WINAPI *pfnDwmGetWindowAttribute)(HWND hwnd, DWORD dwAttribute, LPCVOID pvAttribute, DWORD cbAttribute);
static pfnDwmGetWindowAttribute s_DwmGetWindowAttribute;
HMODULE hSysDll = LoadLibrary(_T("dwmapi.dll"));
if(hSysDll) // Loaded dwmapi.dll success, must Vista or above
{
s_DwmIsCompositionEnabled = (pfnDwmIsCompositionEnabled)GetProcAddress(hSysDll, "DwmIsCompositionEnabled");
s_DwmSetWindowAttribute = (pfnDwmSetWindowAttribute)GetProcAddress(hSysDll, "DwmSetWindowAttribute");
s_DwmGetWindowAttribute = (pfnDwmGetWindowAttribute)GetProcAddress(hSysDll, "DwmGetWindowAttribute");
}
...
...
bool IsAeroEnabled()
{
BOOL bAero = FALSE;
if(s_DwmIsCompositionEnabled)
s_DwmIsCompositionEnabled(&bAero);
return bAero != FALSE;
}
...
...
HRESULT ProxyDwmSetWindowAttribute(HWND hwnd, DWORD dwAttribute, LPCVOID pvAttribute, DWORD cbAttribute)
{
if (s_DwmSetWindowAttribute)
{
return s_DwmSetWindowAttribute(hwnd, dwAttribute, pvAttribute, cbAttribute);
}
return E_FAIL;
}
に切り替えされているもの "最高のパフォーマンスを最適化?"これはコンパイラオプションかOSの設定ですか? –
OS設定のDavidです。 Control Pannelから_Adjust Visual Effects_設定の下で正確に設定します。 – Hemant