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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mfc多文档子窗口最大化后怎样去掉右上角的系统按钮(最大化,最小化和关闭)相关的知识,希望对你有一定的参考价值。

希望可以先将子窗口最大化,不是最大化时可以用样式选择不显示系统按钮,那个我知道怎样做。
只是最大化之后就不知道怎样把那些按钮给掉了。最好是只去掉最大化,最小化而不去掉关闭按钮。希望知道的朋友帮帮我。谢谢!
如果能够解决问题,可以追加分。

CMainFrame::PreCreateWindows(CREATESTRUCT& cs)

if( !CMDIFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
cs.style&=~WS_MAXIMIZEBOX;//添加这一句,是禁用最大化的按钮;
return TRUE;
追问

这个只是禁用父窗口最大化按钮的。
我想实现的是子窗口在最大化之后再去掉最大化按钮。

参考技术A 可以通过修改属性来完成,可以在OnSize函数或是OnSysCommand函数中添加处理追问

您能具体一点吗?怎样修改属性或者在OnSize函数中处理?

追答

Minimize box 是对窗口最小化按钮的设置
Maximize box是对窗口最大化按钮的设置

MFC 对话框最小化与还原

我想用对话框实现一个屏幕取点的功能,从菜单上选择该项后弹出一个对话框(IDD_DIALOG1),点击该对话框上一按钮(IDC_POINT1)后,该对话框自动最小化,同时调用选点的处理函数,按下鼠标左键后该对话框还原,并返回刚才选定的点。这个对话框最小化与还原怎么实现?我用的ShowWindow(SW_MINIMIZE)。在OnPoint1()直接调用时主函数的对话框最小化了。 而用GetDlgItem(IDD_DIALOG1)->ShowWindow(SW_MINIMIZE)就报错。怎么办?是不是这个对话框类型不对?我是从resources中直接insert dialog,这种对话框是不是不支持最小化。。。
怎么创建阿?请教。。。

ptest.Creat() 报错阿。没有Creat只有个Create( LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL );不知道怎么用

参考技术A GetDlgItem(IDD_DIALOG1)->变成
((类型*)GetDlgItem(IDD_DIALOG1))->
这样应该就行了。本回答被提问者采纳
参考技术B 你的子对话框如果是模态对话框好像这样是不行的,自己创建一个非模态对话框试试看

从resources中直接insert dialog,为这个对话框创建一个类,假定叫Ctest,那么你定义一个Ctest类的指针ptest,使用下面的方法显示对话框:
ptest = new Ctest
ptest->Creat()
ptest->ShowWindow(1);
这样就能显示一个非模态对话框

用->方式
参考技术C GetDlgItem=Get Dialog's Item
得到对话框上的控件 如按钮,编辑框等 当然不能得到对话框本身.

以上是关于mfc多文档子窗口最大化后怎样去掉右上角的系统按钮(最大化,最小化和关闭)的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

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

【VC++】如何最大化对话框

mfc如何设置取消按钮的默认选中以及单击后的默认选中?