我看<windows程序设计>里说GetDeviceCaps(hdc,HORZSIZE)和GetDeviceCaps(hdc,VERTSIZE)在WinNT下固定返回320,240 ,可在我家的一台XP上返回的是266,200,与我家的显示器(15")是一致的,而在另一台XP的机器上(14")返回的是320,240.到底这个函数返回的值是怎么确定的?

解决方案 »

  1.   

    msdn的帮助里面没有象你说的这种说法,就是取回设备的有关信息而已,你的设备不同,取回的信息也就不一样了。
      

  2.   

    可14"的显示器没那么大啊,为什么15"显示的对,14就不对呢,而且关于NT的说法确实是<windows程序设计>里的
      

  3.   

    一个近似算法
    int xdim = 25.4 * GetDeviceCaps(pDC->GetSafeHdc(),HORZRES) / 
    GetDeviceCaps(pDC->GetSafeHdc(),LOGPIXELSX);
    int ydim = 25.4 * GetDeviceCaps(pDC->GetSafeHdc(),VERTRES) /
    GetDeviceCaps(pDC->GetSafeHdc(),LOGPIXELSY);看这个链接
    http://support.microsoft.com/?id=127152
    HOWTO: How to Make an Application Display Real Units of MeasurementGetDeviceCaps(hdc,HORZSIZE) 返回的是logical millimeters
      

  4.   

    两台机器的 RES和LOGPIXELS都是800/600和96/96,计算出的值不应该是那个呀?而且这个算法书上说是98下用的