当前对话框的视图类 thisMDI: AfxGetApp() App->pDocTemplate->Doc->(Framewnd)View pos=GetFirstDocTemplate() GetNextDocTemplate(pos) pos1=GetFirstDoc() GetNextDoc(pos1) pos2=GetFitstView() GetNextView(pos2) GetActiveDoc() GetActiveView() ..... go and don't trun back, you are today's victor
在视类对象中,调用GetDocument()取得文档对象指针,通过该指针访问文档对象。
在视类和文档类中可以调用AfxGetMainWnd()方法取得框架类的指针。
在文档类中,通过UpdateAllView()方法通知视类对象,让视类对象响应文档对象的变化更新显示。
//CMyView接收IDC_SOMEDLG发来的菜单消息
void CMyView::OnSomeDlg()
{
CMyDialog dlg;
dlg.m_pParentWnd = this;
if(dlg.DoModal() == IDOK)
{
//一些你OK要的操作
}
else
{
//一些你不OK的操作
}
}这种方法虽然看起来方便,但是要在CMyDlg.h文件里面加上#include "MyView.h",这会造成一问题,就是如果你非要在MyView.h里头要加上#include "MyDlg.h"的话就会编译出错。但是我个人认为一个对话框对象很少情况下要在整个程序生存期内都存在,所以在成员函数中作一个局部变量就可以了,正如上面程序段所定义那样,对话框只要点一下“确定”或“取消”它的使命就完毕了。这样做,#include "MyDlg.h"就可以加到MyView.cpp中减少头文件藕合的情况了。对于Doc-View的互访,市面上有大把的书,网上有大把的资料。呵呵
当前对话框的视图类 thisMDI:
AfxGetApp()
App->pDocTemplate->Doc->(Framewnd)View
pos=GetFirstDocTemplate() GetNextDocTemplate(pos)
pos1=GetFirstDoc() GetNextDoc(pos1)
pos2=GetFitstView() GetNextView(pos2)
GetActiveDoc()
GetActiveView()
.....
go and don't trun back, you are today's victor