IsProcessDPIAware总是返回true
问题描述:
在Visual Studio 2005中创建的默认未修改项目中运行以下代码,会在vista和Windows 7中显示“yes”消息框。有谁知道为什么? IsProcessDPIAware在这里描述:http://msdn.microsoft.com/en-us/library/aa969261(VS.85).aspx。IsProcessDPIAware总是返回true
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);
我在vwmare中运行vista和windows 7,如果有问题的话。
答
是 DPI Virtualiztion在您的Vista或Windows 7系统中启用?我不确定,但可能是IsProcessDPIAware
返回TRUE
的原因。
http://msdn.microsoft.com/en-us/library/dd464660.aspx#setting_dpi_by_using_control_panel