如何禁止窗口变化大小
我的想法
LRESULT CMainFrame::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
if (message == WM_SYSCOMMAND && wParam == SC_RESTORE)
returnFALSE;
if (message == WM_NCLBUTTONDBLCLK)
return FALSE;
return CFrameWnd::WindowProc(message, wParam, lParam);
}
这样的话,窗口只能放大缩小,不能变化大小,但是,在任务栏上点击它没反应;而要有反应,就不能屏蔽(message == WM_SYSCOMMAND && wParam == SC_RESTORE);
大家支招啊。。。。多谢啦。
[解决办法]
WM_GETMAXMININFO
[解决办法]
楼上的好厉害。
[解决办法]
void CMainFrame::OnGetMinMaxInfo(MINMAXINFO* lpMMI){ // TODO: Add your message handler code here and/or call default lpMMI->ptMinTrackSize.x = 350; lpMMI->ptMinTrackSize.y = 600; __super::OnGetMinMaxInfo(lpMMI);}
[解决办法]
在WM_GETMINMAXINFO消息下,有如下函数:
void CMainFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)
{
// TODO: Add your message handler code here and/or call default
//可以在这里给lpMMI赋值控制窗口大小
CFrameWnd::OnGetMinMaxInfo(lpMMI);
}
MINMAXINFO结构如下:
typedef struct tagMINMAXINFO {
POINT ptReserved;
POINT ptMaxSize; //控制窗口最大化时的宽度(point.x)和高度(point.y)
POINT ptMaxPosition;
//控制窗口最大化时左边(point.x)和上边距离屏幕左上角的位置(point.y)
POINT ptMinTrackSize;
//控制窗口拖拉后的最小尺寸的宽度(point.x)和高度(point.y)
POINT ptMaxTrackSize;
//控制窗口拖拉后的最大尺寸的宽度(point.x)和高度(point.y)
} MINMAXINFO;
[解决办法]
//Win32case WM_GETMINMAXINFO:{ LPMINMAXINFO lpmmi; lpmmi = (LPMINMAXINFO)lParam; lpmmi->ptMinTrackSize.x = 最小宽度;lpmmi->ptMinTrackSize.y = 最小高度; return 0;}break;//MFCvoid CMFCDialogDlg::OnGetMinMaxInfo( MINMAXINFO FAR* lpMMI ){ lpMMI->ptMinTrackSize.x = 最小宽度;lpMMI->ptMinTrackSize.y= 最小高度; CDialog::OnGetMinMaxInfo(lpMMI);}