调用GetDeviceCaps是否有先决条件?我试图发现(在运行时)Windows Mobile设备的原生屏幕分辨率是QGVA还是VGA。 OnInitDialog()中的以下返回值均为零:
CDC* dc = GetDC();
int horzRes = GetDeviceCaps( HDC(dc), HORZRES );
int vertRes = GetDeviceCaps( HDC(dc), VERTRES );
int xLogPixels = GetDeviceCaps( HDC(dc), LOGPIXELSX );
int yLogPixels = GetDeviceCaps( HDC(dc), LOGPIXELSY );
答案 0 :(得分:1)
试试这个:
int horzRes = GetSystemMetrics(SM_CXSCREEN);
int vertRes = GetSystemMetrics(SM_CYSCREEN);
答案 1 :(得分:1)
肯定有先决条件......
http://msdn.microsoft.com/en-us/library/ms838191.aspx说:
启用高分辨率感知应用程序开发。
我无法以这种方式创建CEUX资源,但是在我将其直接添加到资源文件后,我成功了,例如:
HI_RES_AWARE CEUX {1} // To turn off the emulation layer
应用程序代码还需要有一个介绍:
AfxEnableDRA( true );
即便如此,上面的所有GetDeviceCaps值仍为零,但
int widthX = GetSystemMetrics( SM_CXFULLSCREEN );
int heightY = GetSystemMetrics( SM_CYFULLSCREEN );
int captionHeight = GetSystemMetrics( SM_CYCAPTION );
int menuHeight = GetSystemMetrics( SM_CYMENU );
int dialogFrameWidth = GetSystemMetrics( SM_CXDLGFRAME );
int dialogFrameHeight = GetSystemMetrics( SM_CYDLGFRAME );
VGA分辨率PPC03se和WM5设备和模拟器上的所有返回(高分辨率)值。