MFC 实现对显示的界面(最小宽度和最小高度的限制)

来源:互联网 发布:叶子流量卡淘宝店地址 编辑:程序博客网 时间:2024/05/22 03:38

MFC窗口 对拖动的最小范围的限制

第一步:在类向导中,对WM_GETMINMAXINFO消息进行映射

1)如果是单文档视图结构,在CMainFrame类中派生该消息,生成相应的响应函数

2)如果是对话框结构,在CXXXDlg类中派生该消息,生成相应的响应函数

第二步,在生成的响应函数中添加如下代码(本示例是基于单文档视图结构,代码如下

//窗口缩小到的最小范围
#define MINIMUM_WINDOWS_X 1024  #define MINIMUM_WINDOWS_Y 768
void CMainFrame::OnGetMinMaxInfo(MINMAXINFO* lpMMI){// TODO: 在此添加消息处理程序代码和/或调用默认值int cx = GetSystemMetrics(SM_CXSCREEN); int cy = GetSystemMetrics(SM_CYSCREEN); int nShellHight = 0;//获取任务栏CWnd* pTaskWnd = FindWindow( _T("Shell_TrayWnd"), NULL ); if (pTaskWnd != NULL){LONG lStyle = GetWindowLong( pTaskWnd->GetSafeHwnd(), GWL_STYLE ); //如果任务栏存在且可见,要减去任务栏高度if( lStyle & WS_VISIBLE ) { //任务栏可见 RECT TastRect;pTaskWnd->GetWindowRect(&TastRect); //任务栏的尺寸nShellHight = TastRect.bottom - TastRect.top;} else { //任务栏隐藏 不做处理}}cy -= nShellHight;lpMMI->ptMaxSize.x = cx;  // 设置窗口最大化时的宽度lpMMI->ptMaxSize.y = cy;  // 设置窗口最大化时的高度lpMMI->ptMaxPosition.x = 0; // 设置窗口最大化时x坐标lpMMI->ptMaxPosition.y = 0; // 设置窗口最大化时y坐标lpMMI->ptMinTrackSize.x = MINIMUM_WINDOWS_X; // 设置窗口最小宽度lpMMI->ptMinTrackSize.y = MINIMUM_WINDOWS_Y; // 设置窗口最小高度lpMMI->ptMaxTrackSize.x = cx; // 设置窗口最大宽度lpMMI->ptMaxTrackSize.y = cy; // 设置窗口最大高度CFrameWndEx::OnGetMinMaxInfo(lpMMI);}

阅读全文
0 0
原创粉丝点击