【发布时间】:2021-06-20 12:08:59
【问题描述】:
我有一个对话资源,里面有一些控件,主要是用户和密码编辑控件,绑定到CFormView。这样的对话框是一个 300 x 200 像素的小矩形。
当我运行应用程序时,CFrameWindow 几乎占据了整个屏幕,所以对话框显示在左上角。如果我尝试获取CFormView 的矩形尺寸,我发现它已经扩展到CMainFrame 中的可见区域,无论原始对话框大小如何。
我的问题是是否可以将对话框(CFormView)保持在CMainFrame 的中间,并且即使调用ON_SIZE 消息也始终保持居中。
谢谢。
【问题讨论】:
-
我只是快速搜索了一下,看到了几个。例如:codeguru.com/cpp/misc/misc/article.php/c3765/… 但我没有这方面的个人经验。在资源编辑器中调整控件的动态布局属性怎么样?
-
我建议这不是理想的解决方案。更好的是使框架更小,然后居中。这个答案显示了如何使框架更小:stackoverflow.com/questions/20940927/…
-
可能在你的框架类中重写 RecalcLayout() 是你想要拦截它的地方。在这里从内存工作......并且在这台机器上没有 VC++......但是,框架获取视图并将其调整为与框架客户区域相同的大小(好吧,关闭 - 为视图保留的区域在处理工具栏等之后)。您可以让 formview 成为另一个窗口的子窗口,并让该窗口以 formview 为中心。例如,拆分器窗口是框架的子级,然后视图是拆分器窗口的子级。
-
您不必编写任何代码行。只需使用 VS2019 rc 编辑器中的动态布局功能即可。