Есть более короткие способы сделать это, но вот прямой путь. Предположим, что следующий код является обработчиком меню в вашем классе 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...
}
}
}
}
В основном вам нужно получить указатель на шаблон, посмотреть на связанные с ним CD-документы, и для каждого CD-документа пройти через все представления, прикрепленные к документу.
Если вы используете только один шаблон, один документ и несколько вложенных видов, вы можете сохранить шаблон в классе CMainFrame и быстрее добраться до него, вызвав AfxGetApp () -> m_pTemplate.
MFC в некотором роде прикольный, но он позволяет вам перейти к любой части архитектуры Doc / View, если вам нужно.
Надеюсь, это направит вас в правильном направлении.