假设我想在MFC MDI应用程序中的doc类中访问特定视图(如果它已经打开).视图当前是否有效.如果我可以假设视图始终处于活动状态,我可以按照此说明操作
http://support.microsoft.com/kb/108587
但视图也可以是非活动的.有没有办法做到这一点?
有更短的方法来做到这一点,但这是直截了当的方式.假设以下代码是CMainFrame类中的菜单处理程序:
for( POSITION pos = AfxGetApp()->GetFirstDocTemplatePosition(); pos != NULL; )
{
CDocTemplate* pTempl = AfxGetApp()->GetNextDocTemplate( pos );
for( POSITION pos1 = pTempl->GetFirstDocPosition(); pos1!= NULL; )
{
CDocument* pDoc = pTempl->GetNextDoc( pos1 );
for( POSITION pos2 = pDoc->GetFirstViewPosition(); pos2 != NULL; )
{
CView* pView = pDoc->GetNextView( pos2 );
if( pView->IsKindOf( RUNTIME_CLASS(...) ) )
{
// Do what you need with the view...
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
您基本上必须获得指向模板的指针,查看与其关联的CD文档,并为每个CD文档遍历附加到文档的所有视图.
如果您只使用一个模板,一个文档和多个附加视图,则可以将模板保存在CMainFrame类中,并通过调用AfxGetApp() - > m_pTemplate来更快地获得它.
MFC在某些方面很时髦,但如果您需要,它可以让您访问Doc/View架构的任何部分.
希望这能指出你正确的方向.
| 归档时间: |
|
| 查看次数: |
2346 次 |
| 最近记录: |