2011-04-18 57 views
0

我使用的MFC(是的,必须是MFC,不,我不能与.Net互操作)创建一个CFrameWnd。MFC 10 - 在CView中可以有CFrameWnd吗?

我的目标是创建一个包含了基于对话框模板类似于像一个CFormView一个CFrameWnd的:

enter image description here

我已经得到了框架和视图中显示,和我有一个编辑在那里控制。现在我想要的是将CToolbar对齐到Edit Text控件的顶部,但不会停靠在顶部框架上。

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

我觉得奇怪的是,如果通过使用CreateView函数,我可以轻松实现这个功能。我真的不想要一个分离器,并觉得应该有另一种方式。

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

  • Q1 - 怎样才可以有一个CView的(像什么CSplitter :: CreateView的那样)内的CFrameWnd?
  • Q2 - 如何在CView中定位一个工具栏而无需在另一个框架中对接或浮动它(我只愿意调整大小,只要我知道如何手动定位它)?

现在我真的很感激.Net中的简单事情。

回答

2

我不会推荐在CView中粘贴CFrameWnd。您将一直与MFC战斗,基本上生活在ASSERT的世界中,因为内部功能(如消息路由)假定帧不在视图中。

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

这方面的一个很好的例子是在Visual Studio示例应用程序PropertiesViewBar.cpp:

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

注意:您可能需要重写的OnCmdMsg延长消息路由到内部控制。

+0

谢谢你一堆。我没有看过样品,但它们非常好。从我们现有的代码出发,让我走错了路。 这仅仅是我或者是文档有点模糊/神秘,哪个控件最适合特定的任务?我需要一个更好的策略来确定使用哪些控件。在.NET中它似乎更直观。 – Steiny 2011-04-19 03:26:34

+0

是的,文档不是很好。所需要的是出色的专业MFC书的更新版本,以涵盖新的功能包。我使用名为FileLocator Pro的产品来浏览MFC源代码和示例应用程序。 – snowdude 2011-04-19 08:52:36

相关问题