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

本文介绍了五种用于检测电脑屏幕尺寸的技术方法,包括使用GetSystemMetrics()、GetDeviceCaps()、SystemParametersInfo()、EnumDisplaySettings()及GetWindowRect()函数。这些方法有助于软件更好地适配不同屏幕尺寸。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现在计算机就像买白菜一样,规格各异。有时候需要检测电脑的屏幕大小,以适应软件的需求。现总结如下,欢迎大家添加,一是增张我的见识,二是方便大家查询。
 
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 
{ 
//隐藏 
}

转载于:https://www.cnblogs.com/xiaodukuko/p/5770775.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值