1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
CWnd *FindInstanceView(CRuntimeClass *pViewClass)
{
CWinApp* pApp = AfxGetApp();
// parcourir tous les templates
CDocTemplate* pTemplate;
POSITION pos = pApp->GetFirstDocTemplatePosition();
while (pos != NULL)
{
pTemplate = pApp->GetNextDocTemplate(pos);
ASSERT(pTemplate);
// tous les documents du template.
POSITION pos2 = pTemplate->GetFirstDocPosition();
while (pos2)
{
CDocument* pDoc = pTemplate->GetNextDoc(pos2);
ASSERT(pDoc);
// toutes les vues du document
POSITION pos3 = pDoc->GetFirstViewPosition();
while (pos3 != NULL)
{
CView* pView = pDoc->GetNextView(pos3);
ASSERT(pView);
if (::IsWindow(pView->GetSafeHwnd()))
{
if(pView->IsKindOf(pViewClass))
{
return pView;
}
}
}
}
}
return NULL;
} |