如何创建或者切换活动文档视图?

zhuzebin 2004-08-04 10:18:45
如题,最好给点代码看看,谢谢.
找了好久,都没找到合适的.
...全文
90 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuzebin 2004-08-04
  • 打赏
  • 举报
回复
妈的,自己弱智,不小心在定义了CXXView指针两次,所以没得到想要的指针.
改过来后就好了.
谢谢各位!
zhuzebin 2004-08-04
  • 打赏
  • 举报
回复
TO: gemi(翔)
我用你的代码试了一下,不过感觉你的是单文档的,我有多有文档模板,要在它们之间创建或切换.
我改了一下,把它改成适合多文档的情形,但我有一个视图是从CEditView继承来的,用了那个函数后,用视图类调用GetEditCtrl(),得不到Edit控件啊??????????????????????????????
snowx 2004-08-04
  • 打赏
  • 举报
回复
活动文档就这样
CxxxView *pView;
POSITION pos = GetDocument()->GetFirstViewPosition();
pView = (CxxxView *)GetDocument()->GetNextView(pos);
while(!pView->IsKindOf(RUNTIME_CLASS(CxxxView)))
{
pView = (CxxxView *)GetDocument()->GetNextView(pos);
}

你就能得到view的指针了

创建的,根据名字就行了把
holyeagle 2004-08-04
  • 打赏
  • 举报
回复
MDINext();就可以遍历激活所有的doc;如果你有view handle可以用
CView *pView = (CView*)(m_pParent->FromHandle((HWND)pResult->DocInfo.hViewWnd));
if (NULL == pView)
{
return FALSE;
}
CMDIChildWnd *pChild = (CMDIChildWnd*)pView->GetParent();
if (NULL == pChild)
{
return FALSE;
}
pChild->MDIActivate();
激活指定的doc

打开是标准的,只要响应
ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)
ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
就可以打开或者是新建了,不知道你具体的问题是什么?

gemi 2004-08-04
  • 打赏
  • 举报
回复
在CMainFrame下定义SwitchToView函数,如下:

void CMainFrame::SwitchToView(CDocTemplate *pTemplate, CRuntimeClass *
pViewClass)
{
CMDIChildWnd *pMDIActive=MDIGetActive();//get the active CMDIChildWnd
CDocument* pDoc;
if(pMDIActive==NULL)//if there is no active ChildFrame
{
pTemplate->OpenDocumentFile(NULL);
return;
}
else
pDoc=pMDIActive->GetActiveDocument();

CView *pView;
POSITION pos=pDoc->GetFirstViewPosition();
while(pos!=NULL)
{
pView=pDoc->GetNextView(pos);
if(pView->IsKindOf(pViewClass))//find the active frame
//if has ,get the activedocument
//have the view ;
{
pView->GetParentFrame()->ActivateFrame();
return;
}
}
CMDIChildWnd *pNewFrame=(CMDIChildWnd*)
pTemplate->CreateNewFrame(pDoc,NULL);
if(pNewFrame==NULL)
return;
pTemplate->InitialUpdateFrame(pNewFrame,pDoc);

}
再在相应的菜单函数中加入
SwitchToView(theApp.pChart,RUNTIME_CLASS(CChart));
其中pChart为相应的多文档模板指针,CChart为定义的视图类

Kudeet 2004-08-04
  • 打赏
  • 举报
回复
参考CSplitterWnd的CreateView代码
http://www.czvc.com/down.asp?id=10

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧