VC++得到任务栏的高度和位置的方法

1.判断位置
SystemParametersInfo(SPI_GETWORKAREA,   0,   &rt,   0)  
//任务栏在下面的高度  
int   y   =   ::GetSystemMetrics(SM_CYSCREEN)-rt.Height();  
上面  
int   y   =   rt.top;  
左  
int   y   =   rt.left;  
右  
int   y   =   ::GetSystemMetrics(SM_CXSCREEN)-rt.Width();
2.得到高度,然后可判断位置
CRect   rect;  
CWnd *pWndPrev=   FindWindow("Shell_TrayWnd", "");  
pWndPrev->GetWindowRect(&rect);
   //rect.bottom-rect.top   就是任务栏的高度
if(rect.top>0)//下面
if(rect.left>0)//左面
VC++得到和改变屏幕的分辨率
//获取屏幕的分辨率  
int   nFullWidth=GetSystemMetrics(SM_CXSCREEN);  
int   nFullHeight=GetSystemMetrics(SM_CYSCREEN);

DEVMODE   lpDevMode;  
lpDevMode.dmBitsPerPel=32;//修改为32位颜色  
lpDevMode.dmPelsWidth=1024;//分辨率X为1024  
lpDevMode.dmDisplayFrequency=85;//刷新率为85HZ  
lpDevMode.dmPelsHeight=768;//分辨率Y为768  
lpDevMode.dmSize=sizeof(lpDevMode);  
lpDevMode.dmFields   =DM_PELSWIDTH|DM_PELSHEIGHT|DM_BITSPERPEL|DM_DISPLAYFREQUENCY;  
ChangeDisplaySettings(&lpDevMode,1);
ChangeDisplaySettings用VC实现动态改变Windows的显示特性
通过消息控制窗体最大化和还原
//还原
SendMessage(WM_SYSCOMMAND,SC_RESTORE,0);
//最大化
SendMessage(WM_SYSCOMMAND,SC_MAXIMIZE,0);
//最小化
SendMessage(WM_SYSCOMMAND,SC_MINIMIZE,0);
17:40 | 添加评论 | 固定链接 | 写入日志 | 计算机与 Internet
怎样用鼠标拖动没有标题栏的对话框
1.
WM_NCHITTEST消息  
UINT   CMyDlg::   OnNcHitTest   (CPoint   point )  
{  
UINT   nHitTest   =CDialog   ::   OnNcHitTest   (point   );  
   return   (nHitTest   ==HTCLIENT)?   HTCAPTION   :   nHitTest   ;  
}
2.
void   CXxxDlg::OnLButtonDown(UINT   nFlags,   CPoint   point)    
{  
//移动窗口  
     SendMessage(WM_SYSCOMMAND,SC_MOVE|HTCLIENT,0);  
      CDialog::OnLButtonDown(nFlags,   point);  
}  
3.
void   CYourDlg::OnLButtonDown(UINT   nFlags,   CPoint   point)    
{  
CDialog::OnLButtonDown(nFlags,   point);  
          PostMessage(   WM_NCLBUTTONDOWN,   HTCAPTION,   MAKELPARAM(   point.x,   point.y));    
}  
4.
LRESULT CGameDemoDlg::OnNcHitTest(CPoint point)
{
//移动窗口
ScreenToClient(&point);
if (point.y<28)
{
//返回该值,欺骗系统,让它相信这就是标题栏
return HTCAPTION;
}
return CDialog::OnNcHitTest(point);
}

你可能感兴趣的:(VC++得到任务栏的高度和位置的方法)