指针获取问题?

lzn1 2004-08-03 04:46:36
在CMainFrame 中如何获取框架产生的 文档类,视图类指针
...全文
85 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
nnheaven 2004-08-03
  • 打赏
  • 举报
回复
Frame有成员变量CView* m_pViewActive;
成员函数:CDocument* GetActiveDoucument() {return pView->GetDoucment};
CView 中:CDocument* m_pDocumnet;指向Document
GetDocument(){return m_pDocument}是CView中获得Documnet指针的函数
GetParentFrame()函数指向Frame
CDocumnet中有CPtrList m_viewList;指向各个View的一个链表指针
nnheaven 2004-08-03
  • 打赏
  • 举报
回复
都说完了
lixiaosan 2004-08-03
  • 打赏
  • 举报
回复
8.4访问当前活动视图和活动文档

对于SDI程序,主框架窗口就是文档框窗,可以采用以下方法取得当前文档和视图:

取得活动文档:

CMyDocument* pDoc;

pDoc=(CMyDocument*)((CFrameWnd*)AfxGetApp()->m_pMainWnd)->GetActiveDocument();



pDoc=(CMyDocument*)((CFrameWnd*)AfxGetMainWnd());

这两者是等效的。

取得活动视图:

CMyView* pView;

pView=(CMyView*)((CFrameWnd*)AfxGetApp()->m_pMainWnd)->GetActiveView();

对于MDI程序,由于子窗口才是文档框窗,因此首先要用GetActiveFrame()取得活动子框架窗口,然后通过该子窗口获取活动文档和视图:

CMDIChildWnd* pChild=(CMDIChildWnd*)((CFrameWnd*)AfxGetApp()->m_pMainWnd)->GetActiveFrame();

取得活动文档:

CMyDocument* pDoc=pChild->GetActiveDocument();

CMyView* pView=(CMyView*)pChild->GetActiveView();

可以把上述函数片段做成静态成员函数,比如:

static CMyDocument::GetCurrentDoc()

{

CMDIChildWnd* pChild=(CMDIChildWnd*)((CFrameWnd*)AfxGetApp()- >m_pMainWnd)->GetActiveFrame();

CMyDocument* pDoc=pChild->GetActiveDocument();

}

这样就可以通过以下方式取得活动文档(或视图):

CMyDocument::GetCurrentDoc();

youki1234 2004-08-03
  • 打赏
  • 举报
回复
严重同意楼上的
liurunfeng 2004-08-03
  • 打赏
  • 举报
回复
GetActiveDocument Returns the active CDocument object.
GetActiveFrame Returns the active CFrameWnd object.
GetActiveView Returns the active CView object.
holyeagle 2004-08-03
  • 打赏
  • 举报
回复
CMDIFrameWnd *pFrame =
(CMDIFrameWnd*)AfxGetApp()->m_pMainWnd;

// Get the active MDI child window.
CMDIChildWnd *pChild =
(CMDIChildWnd *) pFrame->GetActiveFrame();

// or CMDIChildWnd *pChild = pFrame->MDIGetActive();

// Get the active view attached to the active MDI child
// window.
CMyView *pView = (CMyView *) pChild->GetActiveView();

16,548

社区成员

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

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

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