我想获得整个屏幕,除掉任务栏后的大小。我是这样做的。
int iWidth  = GetSystemMetrics(SM_CXFULLSCREEN);
int iHeight = GetSystemMetrics(SM_CYFULLSCREEN);
但是!我发现我获得不是除掉任务栏的高度的哇。这个,是不是用错咯参数?谢谢~

解决方案 »

  1.   

    int nTaskHeight = 0;
    int nSysWidth = GetSystemMetrics( SM_CXSCREEN );
    int nSysHeight = GetSystemMetrics( SM_CYSCREEN );CWnd *pTaskBar = NULL;
    pTaskBar = FindWindow( _T("Shell_TrayWnd"), NULL);if (pTaskBar)
    {
    CRect rectTask;
    pTaskBar->GetWindowRect(&rectTask);

    nTaskHeight = rectTask.Height();
    }
    你要求的高度=nSysHeight - nTaskHeight ;
      

  2.   

    已经解决咯。GetSystemMetrics(SM_CXFULLSCREEN) 和 GetSystemMetrics(SM_CYFULLSCREEN) 
    这两个不行,会有大概30像素的误差不知道原因的很怪异。所以,需要使用这个:
    SystemParametersInfo(SPI_GETWORKAREA,0,&rcWorkArea,0)这样,获得的rcWorkArea就是除掉工具栏,除掉任务栏的正确范围咯。