Выполнение следующего в немодифицированном проекте по умолчанию, созданном в Visual Studio 2005, отображает окно сообщения «да» как в Vista, так и в Windows 7. Кто-нибудь знает, почему? IsProcessDPIAware описан здесь: http://msdn.microsoft.com/en-us/library/aa969261(VS.85).aspx.
HMODULE hUser32 = LoadLibrary(L"user32.dll");
typedef BOOL (*fnPtr)();
fnPtr IsProcessDPIAware = (fnPtr)GetProcAddress(hUser32, "IsProcessDPIAware");
if(IsProcessDPIAware) {
if(IsProcessDPIAware() == TRUE) {
MessageBox(NULL, L"yes", NULL, MB_OK);
}
else {
MessageBox(NULL, L"no", NULL, MB_OK);
}
}
else {
MessageBox(NULL, L"no fn", NULL, MB_OK);
}
FreeLibrary(hUser32);
Я запускаю Vista и Windows 7 в vwmare, если это имеет значение.