作者最近在开发多文档视图程序,需要在视图间切换时处理激活视图数据的更新,开始用OnActivateView虚函数,但其在视图内容更新后触发,不符合要求,查找资料找到如下解决方法:
1、在CChildFrame类中添加WM_MDIACTIVATE消息处理即OnMDIActivate函数;
2、 在函数中添加如下代码:
if(bActivate)
{
CDocument * pDoc = GetActiveDocument();
POSITION pos = pDoc->GetFirstViewPosition();
CView* pView = NULL;
while(pos != NULL)
{
pView = pDoc->GetNextView(pos);
if(!pView->IsTopParentActive()) // 视图是否处于活动状态
continue;
if(pView->IsKindOf( RUNTIME_CLASS(CPrintDocumentsView) ))
{
::PostMessage(pView->m_hWnd, WM_SAVEDATABASE, 3, NULL); // 向活动状态的视图发送消息
}
}
}
当激活视图时,就会向视图发送自定义消息,进行相应处理。
本文介绍了一种在多文档界面(MDI)程序中实现视图切换时更新数据的方法。通过在CChildFrame类中添加WM_MDIACTIVATE消息处理函数,并检查活动视图的状态来发送自定义消息,确保了视图内容的及时更新。
1026

被折叠的 条评论
为什么被折叠?



