2011-04-18 56 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

相關問題