菜鸟提问,如何禁止窗口大小改变 单文档程序,运行期间若需要可以用movewindow改变窗口的大小,但其余时候我不希望用户改变窗口的大小,应该怎么实现?请各位大侠赐教! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 把对话框的border属性设置成为Dialog Frame properties-》sytles-》border 设置未dialog frame 添加CMainFrame类的PreCreateWindow虚函数,实现如下BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs){ if( !CFrameWnd::PreCreateWindow(cs) ) return FALSE; cs.style& = ~WS_THICKFRAME; //cs.style&=~WS_MAXIMIZEBOX; //cs.cx=400; //cs.cy=300; return TRUE;} 处理WM_SIZING.在这个消息处理函数中,什么都不做,父类的OnSizing也不调 处理WM_SIZING.参考如下代码:void CHsDataChangeDlg::OnSizing(UINT fwSide, LPRECT pRect) { if(pRect->right - pRect->left >= 305) pRect->right = pRect->left + 305; else if(pRect->right - pRect->left < 305) pRect->right = pRect->left + 305;}可将对话框限制在一定大小范围内 bager(柏哥) 的方法还可以,添加CMainFrame类的PreCreateWindow虚函数,实现如下BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs){ if( !CFrameWnd::PreCreateWindow(cs) ) return FALSE; cs.style& = ~WS_THICKFRAME; //cs.style&=~WS_MAXIMIZEBOX; //cs.cx=400; //cs.cy=300; return TRUE;}另外 一种方法你也可以在初始化的时候,用modestyle()改变窗口的模式 一种是BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs){ ... cs.style&=~WS_SIZEBOX; ...}另一种是重载WM_GETMINMAXINFOvoid CMainFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI) { // TODO: Add your message handler code here and/or call default lpMMI->ptMaxTrackSize.x = CPoint(600,400); lpMMI->ptMaxTrackSize.y = CPoint(600,400); CFrameWnd::OnGetMinMaxInfo(lpMMI);} CTreeCtrl添加TVS_CHECKBOXES后,横向滚动条显示不正常 关于CListCtrl重画边框的问题 WSAAsyncselect FD_WRITE 状态栏初始成功后,怎样在函数里使用、更新,帮忙指教 LoadLibrary失败,何故? 激光打印机和喷墨打印机效果不同问题 一个关于结构数组的传送问题 各种关闭方式的不同之处? 静态文本控件怎么添加变量 如何实现检索文字,然后做出反应,有数据库 我用SetWindowsHookEx为一个进程安装钩子为什么为失败?(解决马上给分) 关于CALLBACK
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
cs.style& = ~WS_THICKFRAME;
//cs.style&=~WS_MAXIMIZEBOX;
//cs.cx=400;
//cs.cy=300;
return TRUE;
}
参考如下代码:
void CHsDataChangeDlg::OnSizing(UINT fwSide, LPRECT pRect)
{
if(pRect->right - pRect->left >= 305)
pRect->right = pRect->left + 305;
else if(pRect->right - pRect->left < 305)
pRect->right = pRect->left + 305;
}
可将对话框限制在一定大小范围内
添加CMainFrame类的PreCreateWindow虚函数,实现如下
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
cs.style& = ~WS_THICKFRAME;
//cs.style&=~WS_MAXIMIZEBOX;
//cs.cx=400;
//cs.cy=300;
return TRUE;
}
另外 一种方法
你也可以在初始化的时候,用modestyle()改变窗口的模式
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
...
cs.style&=~WS_SIZEBOX;
...
}另一种是
重载WM_GETMINMAXINFO
void CMainFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)
{
// TODO: Add your message handler code here and/or call default
lpMMI->ptMaxTrackSize.x = CPoint(600,400);
lpMMI->ptMaxTrackSize.y = CPoint(600,400);
CFrameWnd::OnGetMinMaxInfo(lpMMI);
}