得到屏幕大小的方法 原文链接:http://blog.csdn.net/mycaibo/article/details/6034343

现在计算机就像买白菜一样,规格各异。有时候需要检测电脑的屏幕大小,以适应软件的需求。现总结如下,欢迎大家添加,一是增张我的见识,二是方便大家查询。
 
1.使用GetSystemMetrics()函数:如:
int   cx   =   GetSystemMetrics(SM_CXFULLSCREEN); //得到宽度
int   cy   =   GetSystemMetrics(SM_CYFULLSCREEN); //得到高度
注意SM_CXSCREEN和SM_CYSCREEN与上面的区别。
2.使用GetDeviceCaps()函数,如:
int   cx   =   ::GetDeviceCaps(dc.m_hDC,HORZRES); 
int   cy   =   ::GetDeviceCaps(dc.m_hDC,VERTRES);
3.使用SystemParametersInfo()函数,如:
CRect rt;
SystemParametersInfo(SPI_GETWORKAREA, 0, r,t 0);
4.使用EnumDisplaySettings()函数,如:
DEVMODE dm;
dm.dmSize = sizeof(DEVMODE) ;
EnumDisplaySettings(NULL,ENUM_CURRENT_SETTINGS,&dm);
int  cx   =  dm.dmPelsWidth;
int  cx   =  dm.dmPelsHeight;
5.使用GetWindowRect()函数,如:
CWnd * pwndDesktop = GetDesktopWindow();
CRect rt;
pwndDesktop->GetWindowRect(&rt);
int cx =rt.Width();
Int cy = rt.Height();
 
附加:
1.int cx = GetSystemMetrics(SM_CXFULLSCREEN); 
int cy = GetSystemMetrics(SM_CYFULLSCREEN);
通过上边两个函数获取的是显示屏幕的大小,及不包括任务栏等区域。
 
int   cx   =   GetSystemMetrics(   SM_CXSCREEN   );   
int   cy   =   GetSystemMetrics(   SM_CYSCREEN   );
这两个函数获取的是真正屏幕的大小。
 
用前两个函数获取的大小可能是1024*687    而用下边两个获取的就是1024*768
2. 得到任务栏大小: 
CWnd* pTaskWnd = FindWindow( _T("Shell_TrayWnd"), NULL ); 
if( pTaskWnd ) pTaskWnd->ShowWindow( FALSE ); 
3.任务栏是否隐藏: 
LONG lStyle = GetWindowLong( pTaskWnd->GetSafeHwnd(), GWL_STYLE ); 
if( lStyle & WS_VISIBLE ) 
{ 
//可见 
} 
else 
{ 
//隐藏 
}
posted @ 2016-08-14 18:55  没吃完的火腿肠  阅读(286)  评论(0编辑  收藏  举报