获取屏幕尺寸信息

   

1.获取屏幕大小

方法一:

int with= GetSystemMetrics(SM_CXFULLSCREEN);
int heigh= GetSystemMetrics(SM_CYFULLSCREEN);

以上两个函数获取的是显示屏幕的大小,即不包括任务栏等区域。

方法二

int cx = GetSystemMetrics( SM_CXSCREEN ); 
int cy = GetSystemMetrics( SM_CYSCREEN );

以上两个函数获取的是整个屏幕的大小。

如:前两个函数获取的大小可能是1024*687;而后两个两个获取的是1024*768

2.得到桌面客户区的大小 
方法一:

RECT rc; 
SystemParametersInfo(SPI_GETWORKAREA, 0, (PVOID) &rc, 0); 
str.Format("%d*%d",rc.right-rc.left,rc.bottom-rc.top);

方法二:

先用上面的方法得到整个屏幕的大小,再减去任务栏的大小(注意要考虑任务栏是否隐藏的情况

int cx = GetSystemMetrics(SM_CXSCREEN); 
int cy = GetSystemMetrics(SM_CYSCREEN); 

或 

HDC hdcScreen = GetDC( NULL ); 
int cx = GetDeviceCaps( hdcScreen, HORZRES ); 
int cy = GetDeviceCaps( hdcScreen, VERTRES ); 
DeleteObject( hdcScreen ); 

任务栏: 

CWnd* pTaskWnd = FindWindow( _T("Shell_TrayWnd"), NULL ); 
if( pTaskWnd ) pTaskWnd->ShowWindow( FALSE ); 


任务栏是否隐藏: 
LONG lStyle = GetWindowLong( pTaskWnd->GetSafeHwnd(), GWL_STYLE ); 
if( lStyle & WS_VISIBLE ) 
{ 
//可见 
} 
else 
{ 
//隐藏 
}

 

你可能感兴趣的:(屏幕大小)