日期:2014-05-17  浏览次数:21200 次

请教一下为什么我用GetDeviceCaps拿到的屏幕长度宽度会不正常呢?
请教一下为什么我用GetDeviceCaps拿到的屏幕长度宽度会不正常呢?
实测量长度
横长约33.9cm
高度约27.1cm
GetDeviceCaps(hdc,4) 452 宽
GetDeviceCaps(hdc,6) 361 高

GetDeviceCaps(hdc,8) 1280 分辨率
GetDeviceCaps(hdc,10) 1024 

不过拿DPI算值又正常
GetDeviceCaps(hdc,88) 96 沿屏幕宽度每逻辑英寸的像素数
GetDeviceCaps(hdc,90) 96 LOGPIXELSY 

宽度 = 1280 * 25.4 /96 = 338mm       //25.4mm/inch
高度 = 1024 * 25.4 /96 = 270.9mm

请问有朋友知道具体原因么。
hdc是用在窗体new了一个graphic的hdc.

------解决方案--------------------
显示器屏幕尺寸吗?
HDC desktopDC = GetDC(GetDesktopWindow());
DWORD dwCmX = GetDeviceCaps(desktopDC, HORZSIZE) / 10;
DWORD dwCmY = GetDeviceCaps(m_hDCPrinter, VERTSIZE) / 10;