读书人

怎么禁止窗口变化大小

发布时间: 2012-09-14 23:00:49 作者: rapoo

如何禁止窗口变化大小

我的想法
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

[解决办法]
楼上的好厉害。
[解决办法]

C/C++ code
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;

[解决办法]
C/C++ code
//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);} 

读书人网 >VC/MFC

热点推荐