【发布时间】:2019-09-05 02:18:56
【问题描述】:
我有一个 MFC 应用程序,它使用 CSplitterWnd 创建多窗格视图。该过程在CFrameWnd::OnCreateClient() 调用中完成。之后,在某些时候,各种视图都会调用它们的CView::OnInitialUpdate() 函数。其中一个视图是CTreeView,另一个是CListView,在OnInitialUpdate() 中设置了多个列。我需要设置默认的CTreeView Item,它也会更新CListView。但是,如果我在OnInitialUpdate 中设置默认值,CListView 尚未设置各个列。因此,完成所有操作后,我似乎需要设置默认的CTreeView Item。我想我会在一些CFrameWnd 回调中这样做。我的问题是我应该在什么时候这样做?
TIA!
【问题讨论】:
-
OnInitialUpdate()在初始化期间被框架调用一次。显示您的代码,并突出显示哪些内容不适合您。 -
框架将为所有视图调用
OnInitialUpdate(),您无法控制调用它们的顺序(可能文档模板或视图的创建顺序会影响它,但没有记录) .一个简单的解决方法是在设置CListView后向CTreeView发布自定义消息,并设置CTreeView以响应该消息,而不是OnInitialUpdate()。 -
好吧,我把它移到了
OnShowWindow()。这给了我现在需要的东西。
标签: mfc