【问题标题】:Center a CFormView "dialog resource" within the CMainFrame window in a SDI在 SDI 中的 CMainFrame 窗口中将 CFormView“对话框资源”居中
【发布时间】: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 编辑器中的动态布局功能即可。

标签: mfc sdi


【解决方案1】:

在 VS2019 中,您无需编写任何代码。 rc Editor 具有动态布局功能。将控件准确地放在对话框的中间。然后设置

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-16
    • 1970-01-01
    • 2012-09-17
    • 1970-01-01
    相关资源
    最近更新 更多