如何在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。在此处查看评论,以获取一些错误修复和改进(免责声明:其中一些由我自己;))。当我们使用此库时,将为我们处理在窗口上设置正确的调整大小标志。