0

我正在使用 MFC(是的必须是 MFC,不,我不能与 .Net 互操作)来创建 CFrameWnd。

我的目标是创建一个包含 CFormView 的 CFrameWnd,该 CFormView 基于类似于以下内容的对话框模板:

在此处输入图像描述

我有要显示的框架和视图,并且那里有一个编辑控件。现在我想要的是让 CToolbar 与 Edit Text 控件的顶部对齐,但不停靠在顶部框架上。

理想情况下,我希望有一个可以动态添加的子框架/视图来代替语句组。这样我就可以像往常一样停靠工具栏。

我觉得奇怪的是,如果我在其中使用 CreateView 函数有一个拆分器,我可以很容易地实现这一点。我真的不想有一个分离器,觉得应该有另一种方式。

总之,这些是我需要帮助的问题:

  • Q1 - 如何在 CView 中拥有 CFrameWnd(就像 CSplitter::CreateView 所做的那样)?
  • Q2 - 如何在 CView 中定位工具栏而不将其停靠或浮动在另一个框架中(我非常愿意调整大小,如果我知道如何手动定位它)?

现在我真的很感激 .Net 中的事情是多么容易。

4

1 回答 1

3

我不建议在 CView 中粘贴 CFrameWnd。您将一直与 MFC 作斗争,基本上生活在一个 ASSERT 的世界中,因为消息路由等内部功能假定框架不在视图中。

而只是使用 CWnd 而不是 CFrameWnd 并在“创建”方法中手动创建工具栏和编辑 ctrl 和大小并自己定位它们(​​创建一个使用 CMFCToolbar::CalcFixedLayout 调整其他组件位置的 AdjustLayout 方法) .

Visual Studio 示例应用程序 PropertiesViewBar.cpp 就是一个很好的例子:

http://msdn.microsoft.com/en-us/library/bb983983(v=vs.90).aspx

注意:您可能需要覆盖 OnCmdMsg 以将消息路由扩展到内部控件。

于 2011-04-18T15:48:43.613 回答