MFC多文档中,如何在视图类的一个菜单单击函数中调用在文档类中定义的一个函数。

tiankong1399 2008-10-11 04:06:11
我用vs2005创建了一个多文档应用程序,在其文档类的CPP文件中编写了一个函数void CghghDoc::Open();接着
在视图类中的CPP文件中编写了一个函数void CghghView::BookToWindow();现在我在视图类中添加了一个
菜单响应事件(这里面要调用文档类中定义的Open函数),我实现下面的功能
void CghghDoc::OnRead()
{
调用文档类中的Open()函数;
调用视图类中的BookToWindow()函数;
}
问题来了,,怎么才能实现对文档类中Open()函数的调用???大家帮忙看看,谢谢~

...全文
191 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
tiankong1399 2008-10-11
  • 打赏
  • 举报
回复
谢谢大家,辛苦了~!自己基础不好,慢慢加强,呵呵。
phisherr 2008-10-11
  • 打赏
  • 举报
回复
这样就能调用调用视图类中的BookToWindow()函数;
phisherr 2008-10-11
  • 打赏
  • 举报
回复
应该是在文档类中getactiveview()得到视图的指针
cnzdgs 2008-10-11
  • 打赏
  • 举报
回复
用GetDocument函数可以得到文档指针,强制转换成CghghDoc*类型就可以了。
devoc 2008-10-11
  • 打赏
  • 举报
回复
得到指针就好办啦
1、根据CWinApp和文档模板,寻找文档
//在CWinAPP类中保存有一个文档模板列表,可以如此查找
CWinApp* pApp=AfxGetApp();
POSITION pos=pApp->GetFirstDocTemplatePosition();
CDocTemplate* pDT=pApp->GetNextDocTemplate(pos);
//在每一个文档模板列表中,有保存着文档列表
pos=pDT->GetFirstDocPosition();
m_pDoc=(Doc*)pDT->GetNextDoc(pos);

2、根据FrameWnd寻找文档
CFrameWnd* pw=(CFrameWnd*)AfxGetMainWnd();
m_pDoc=(Doc*)pw->GetActiveDocument();

方法2我只在SDI用过,在MDI中,可能只能找到当前活动的文档.
不过你可以对你的MDI 子框架窗口GetActiveDocument();
wltg2001 2008-10-11
  • 打赏
  • 举报
回复
void CghghDoc::OnRead()
{
调用文档类中的Open()函数;
调用视图类中的BookToWindow()函数;
}
================
从上面的类名看,这个好像是在文档类,在视图类中获取文档类指针可以用GetDocument();
lwx300 2008-10-11
  • 打赏
  • 举报
回复
//视图类中添加了一个菜单响应事件,void CghghDoc::OnRead()?这好像是在文档类?

void CghghView::OnRead()
{
GetDocument()->Open();
BookToWindow();
}

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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