在MFC中,我去掉最大化和最小化了,当我想让它们仍然显示出来(灰显)只是不可用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在MFC中,我去掉最大化和最小化了,当我想让它们仍然显示出来(灰显)只是不可用相关的知识,希望对你有一定的参考价值。

我用函数SetWindowLong(m_hWnd,GWL_STYLE,GetWindowLong(m_hWnd,GWL_STYLE)&~WS_MAXIMIZEBOX&~WS_MINIMIZEBOX);去掉了最大化和最小化,但这2个按钮消失了。当我只去掉最大化时,最大化就灰显不可用,怎么让最大化和最小化都灰显不可用而不是消失呢?

方法1:重载对话框的消息响应函数,对最大化最小化等消息进行屏蔽
LRESULT Cxx::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)

// TODO: Add your specialized code here and/or call the base class
switch (message)
case WM_SYSCOMMAND:
if(wParam == SC_MINIMIZE)
return;
break;
return CDialog::WindowProc(message, wParam, lParam);

方法2:重载onsyscommand
if((nid&oxfff0)==SC_ICON)//最小化
return;
if((nid&oxfffo)==SC_RESTORE)//回复
return;追问

这样取消后的结果仍然是2个按钮都消失了。有没有其他办法呢?

追答

如上

参考技术A 我想你是在CMainFrame:: ONCREATE中修改的吧!
你要的那种情况应该是在CMainFrame:: PreCreate中去修改
应该是这样的

mfc单文档如何去掉最小化 还原

参考技术A 可以在dlg里选择你要修改的dlg的属性,将maximize box和minimize box设为false就行了。你的dlg的右上角就没有最小化,最大化按钮了本回答被提问者和网友采纳

以上是关于在MFC中,我去掉最大化和最小化了,当我想让它们仍然显示出来(灰显)只是不可用的主要内容,如果未能解决你的问题,请参考以下文章

mfc单文档如何去掉最小化 还原

mfc多文档子窗口最大化后怎样去掉右上角的系统按钮(最大化,最小化和关闭)

MFC/VC 在多文档MDI程序中 子窗口初始最大化显示 如何去掉菜单栏右侧的最小化及向下还原按钮

MFC SDI中,如何删除窗口的最大化和最小化功能(窗口右上角的2个图标)

MFC 对话框编辑器中的最小化/最大化框灰显

MFC Feature Pack 应用程序在辅助监视器中恢复为最大化时大小错误