调用GetSystemMetrics(....)   分辨率:800x600当参数为SM_CXCREEN时为800,
当参数为SM_CXMAXIMIZED时是808,
在640x480下面为648,在1024x768下面为1032,为什么每次都多8个像素单位??它是指什么尺寸?参数为SM_CXFULLCREEN又是指什么??

解决方案 »

  1.   

    SM_CXMAXIMIZED:Default dimensions, in pixels, of a maximized top-level window on the primary display monitor.SM_CXFULLCREEN:
    Width and height of the client area for a full-screen window on the primary display monitor. To get the coordinates of the portion of the screen not obscured by the system taskbar or by application desktop toolbars, call the SystemParametersInfo function with the SPI_GETWORKAREA value. 
    转自msdn
      

  2.   

    你可以尝试创建一个工程
    将工程的窗体初始化时写下代码:
    SetWindowPos(NULL, 0,-40, SCREENWIDTH, SCREENHEIGHT+40, SWP_NOZORDER); 
    SCREENWIDTH   ------  GetSystemMetrics(SM_CXCREEN)   
    SCREENHEIGHT  ------  GetSystemMetrics(SM_CYCREEN)看看和你想象中画出的情况一不一样:)
      

  3.   

    SM_CXFULLCREEN全屏窗口客户区的宽度;
    SM_CXMAXIMIZED指的是一个最大化的顶层窗口的宽度;
    (CY的那个类似,就是高度吧了);
    为什么有8个象素的差别呢?注意这个项目SM_CXFRAME,它是指窗口那个非常窄的立体边缘的大小,结果为4,好了问题解决了,FULLSCREEN是1024没有问题,最大化的窗口立体边缘是不显示的因此它的左上角因改在-SM_CXFRAME和-SM_CYFRAME位置,右下的位置也是一样,就是多了双倍的SM_CXFRAME大小。
      

  4.   

    忘记说了:
    如果你改变桌面的外观,比如用一个“黑白高对比度(大)”方案,那么窗口的边缘就会变化,例如SM_CXFRAME的值变成了9,那么SM_FULLSCREEN的值还是1024,SM_CXMAXIMIZED的值就变成了1042了。
      

  5.   

    还是CSDN里面牛人多一些,我在别的地方也问了好久,都给我贴MSDN!小弟谢过各位!!