如何在MFC中创建可调整大小的CDialog?
时间:2020-03-06 14:46:06 来源:igfitidea点击:
我必须创建一个基于对话框的应用程序,而不是旧的CFormView类型的设计。但是CDialog会生成固定大小的对话框。如何创建具有可调整大小对话框的基于对话框的应用程序?
解决方案
没有简单的方法可以做到这一点。基本上,当窗口大小更改时,我们将需要动态布局控件。
有关示例,请参见http://www.codeproject.com/KB/dialog/resizabledialog.aspx
在RC资源文件中,如果对话框具有与此类似的样式,则它将为固定大小:
IDD_DIALOG_DIALOG DIALOGEX 0, 0, 320, 201 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
如果对话框具有此样式,它将是可调整的:
IDD_DIALOG_DIALOG DIALOGEX 0, 0, 320, 201 STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
使用这些可调整的框架选项,对话框将可调整大小,但是我们仍然需要做很多工作来处理WM_SIZE消息,以管理对话框中控件的大小。
我已经尝试了许多MFC布局库,并发现这是最好的一种:http://www.codeproject.com/KB/dialog/layoutmgr.aspx。在此处查看评论,以获取一些错误修复和改进(免责声明:其中一些由我自己;))。当我们使用此库时,将为我们处理在窗口上设置正确的调整大小标志。