POSITION pos = theApp.GetFirstDocTemplatePosition();
while (NULL != pos)
{
CDocTemplate *pDocT = theApp.GetNextDocTemplate(pos); if (NULL != pDocT)
{
POSITION posDoc = pDocT->GetFirstDocPosition();
while (NULL != posDoc)
{
CDocument* pDoc = pDocT->GetNextDoc(posDoc);
if ( NULL != pDoc )
{
POSITION posView = pDoc->GetFirstViewPosition();
while (NULL != posView)
{
CPQView* pqView = (CPQView*)pDoc->GetNextView(posView);
// 进行操作
}
}
}
}
}
这段代码为什么不能轮询所有打开的视图了?在MainFrame进行的操作。
只找到第一个视图,然后所有的POSITION都被赋值为0x0了?
while (NULL != pos)
{
CDocTemplate *pDocT = theApp.GetNextDocTemplate(pos); if (NULL != pDocT)
{
POSITION posDoc = pDocT->GetFirstDocPosition();
while (NULL != posDoc)
{
CDocument* pDoc = pDocT->GetNextDoc(posDoc);
if ( NULL != pDoc )
{
POSITION posView = pDoc->GetFirstViewPosition();
while (NULL != posView)
{
CPQView* pqView = (CPQView*)pDoc->GetNextView(posView);
// 进行操作
}
}
}
}
}
这段代码为什么不能轮询所有打开的视图了?在MainFrame进行的操作。
只找到第一个视图,然后所有的POSITION都被赋值为0x0了?
CMDIChildWnd *pMDIActive = NULL;
CMDIChildWnd *pOldMDIActive = NULL;
pOldMDIActive = MDIGetActive();
while (pOldMDIActive != pMDIActive)
{
if (NULL == pMDIActive)
{
pMDIActive = pOldMDIActive;
}
CDocument *pDoc = pMDIActive->GetActiveDocument();
if (NULL != pDoc)
{
POSITION pos = pDoc->GetFirstViewPosition();
while(NULL != pos)
{
CView *pView = (CView*)pDoc->GetNextView(pos);
// TODO
}
}
MDINext();
pMDIActive = MDIGetActive();
}
谁能给出解答,依然给分。以上为其他的替代方案。