MDI中MainFrame如何获取指定的Doc 请问下在MDI下的MainFrame中可以获取指定的Doc类指针吗?就是说可能打开了多个文档,但我在MainFrame中要找到指定的文档,这些文档都是由同一模板建立的,那标题是不一样,可否找到某一标题的doc指针及view指针?谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 每个doc应该有个唯一标识,我的程序的每个doc/view装载的背景图不同,所以我就用背景的文件名做标识。 GetFirstDocPosition、GetNextDoc遍历文档,逐个GetTitle,找到文档后再GetFirstViewPosition、GetNextView遍历视图。 遍历吧,取得所有doc,然后挨个取标题进行匹配,文档对应视图也是类似操作 CWinApp *pMyApp = AfxGetApp(); //得到应用程序指针POSITION p = pMyApp->GetFirstDocTemplatePosition();//得到第1个文档模板while (p != NULL) //遍历文档模板{ CDocTemplate *pDocTemplate = pMyApp->GetNextDocTemplate(p); POSITION p1 = pDocTemplate->GetFirstDocPosition();//得到文档模板对应的第1个文档 while (p1 != NULL) //遍历文档模板对应的文档 { CDocument *pDocument = pDocTemplate->GetNextDoc(p1); POSITION p2 = pDocument->GetFirstViewPosition(); //得到文档对应的第1个视图 while (p2 != NULL) //遍历文档对应的视图 { CView *pView = pDocument->GetNextView(p2); } }}pView 就是你需要的文档视图.pDocument是文档. MFC应用程序中指针的使用 CSceDoc * pOpenDoc = NULL;// 假设CSceDoc为你的Doc类CDocTemplate * pTemplate = ((CSceApp *)AfxGetApp())->pDocTemplate;//假设CSceApp为你的AppCSceView * pOpenView = NULL;POSITION pos = pTemplate->GetFirstDocPosition();while (pos){ pOpenDoc = (CSceDoc *)pTemplate->GetNextDoc(pos); if (pOpenDoc != NULL && pOpenDoc->m_strTitle == strTitle) { POSITION pos1 = pOpenDoc->GetFirstViewPosition(); while (pos1) { pOpenView = pOpenDoc->GetNextView(pos1); CMDIChildWnd* childWnd = (CMDIChildWnd*)pView->GetParent(); childWnd->BringWindowToTop(); } return TRUE; }} 补充一下 if (pOpenDoc != NULL && pOpenDoc->m_strTitle == strTitle)改成 if (pOpenDoc != NULL && pOpenDoc->GetTitle()== strTitle)//strTitle 是你要找的标题 CMainFrame* pMain = (CMainFrame*)AfxGetApp()->m_pMainWnd; CMDIChildWnd* pActiveChild = pMain->MDIGetActive(); CXXXDoc* pDocument = (CXXXDoc*)pActiveChild->GetActiveDocument(); 不知该不该用多线程 管道有信息,但ReadFile时不能立即返回,如何解决 selectSingleNode在两个函数里调出错 邮件循环发送问题?? 急急急..... 在CDC中如何设置字体的背景颜色(设成透明)? 非常感谢 请高手赐教,如何将IStorage对象存入一段连续的内存中 菜鸟问题~~高手来给我指点下的啊 难题?? 求助:服务器怎样获得与它建立连接的客户机的IP地址 关于CAsyncSocket类中connect()函数两个参数的问题。给分 关于Windows关机小窗体 对话框的编辑框的问题...
CWinApp *pMyApp = AfxGetApp(); //得到应用程序指针
POSITION p = pMyApp->GetFirstDocTemplatePosition();//得到第1个文档模板
while (p != NULL) //遍历文档模板
{
CDocTemplate *pDocTemplate = pMyApp->GetNextDocTemplate(p);
POSITION p1 = pDocTemplate->GetFirstDocPosition();//得到文档模板对应的第1个文档
while (p1 != NULL) //遍历文档模板对应的文档
{
CDocument *pDocument = pDocTemplate->GetNextDoc(p1);
POSITION p2 = pDocument->GetFirstViewPosition(); //得到文档对应的第1个视图
while (p2 != NULL) //遍历文档对应的视图
{
CView *pView = pDocument->GetNextView(p2);
}
}
}pView 就是你需要的文档视图.pDocument是文档.
CSceDoc * pOpenDoc = NULL;// 假设CSceDoc为你的Doc类
CDocTemplate * pTemplate = ((CSceApp *)AfxGetApp())->pDocTemplate;//假设CSceApp为你的App
CSceView * pOpenView = NULL;
POSITION pos = pTemplate->GetFirstDocPosition();while (pos)
{
pOpenDoc = (CSceDoc *)pTemplate->GetNextDoc(pos); if (pOpenDoc != NULL &&
pOpenDoc->m_strTitle == strTitle)
{
POSITION pos1 = pOpenDoc->GetFirstViewPosition();
while (pos1)
{
pOpenView = pOpenDoc->GetNextView(pos1); CMDIChildWnd* childWnd = (CMDIChildWnd*)pView->GetParent();
childWnd->BringWindowToTop();
}
return TRUE;
}
}
pOpenDoc->m_strTitle == strTitle)改成 if (pOpenDoc != NULL &&
pOpenDoc->GetTitle()== strTitle)//strTitle 是你要找的标题
CMainFrame* pMain = (CMainFrame*)AfxGetApp()->m_pMainWnd;
CMDIChildWnd* pActiveChild = pMain->MDIGetActive();
CXXXDoc* pDocument = (CXXXDoc*)pActiveChild->GetActiveDocument();