MFC把早期的窗口类的功能分成三个部分:数据存储、管理部分,数据显示与用户交互部分,管理窗口框的大小、标题、菜单条、状态条的窗框部分。
从而形成了三个类:CDocument、视图类CView和窗口框架类CFrameWnd。
上面的三个对象之间的关系类似于房屋的窗户,窗口框架类CFrameWnd相当于窗框,视图类CView相当于窗框上的玻璃,而文档类CDocument就相当于室内的物品。在房屋的外面,透过玻璃可以窥见室内的部分物品,作为房屋,它可以有多个窗户从不同的角度来查看房屋中的同一物品。
有两种类型的文档/视图结构程序:单文档界面(SDI)应用程序和多文档界面(MDI)应用程序。当用MFC AppWizard生成应用程序框架时,MFC AppWizard会自动以文档类CDocument为基类。如下:
class CMyDoc:public CDocument
{
private:
int Array[3];
protected:
CMyDoc();
DECLARE_DYNCREATE(CMyDoc)
public:
void SetMem(int i,int x);
int GetMem(int i);
public:
virtual BOOL OnNewDocument();
virtual void Serialize(CArchive &ar);
virtual ~CMyDoc();
DECLARE_MESSAGE_MAP()
};
CMyDoc::CMyDoc()
{
for(int i = 0; i < 3; i ++) Array[i] = 0;
}
void CMyDoc::SetMem(int i,int x)
{
Array[i] = x;
}
int CMyDoc::GetMem(int i)
{
return Array[i];
}
CView对象没有自己的边框,它的作用是为框架窗口提供用户区。
用MFC AppWizard生成应用程序时,会根据项目名字生成一个视图类,如项目名是MyPrj,则向导会生成一个CMyPrjView的类。
class CMyView:public CView
{
protected:
CMyView();
DECLARE_DYNCREATE(CMyView)
public:
CMyDoc *GetDocument();
virtual void OnDraw(CDC *pDC);
virtual BOOL PreCreateWindow(CREATESTRUCT &cs);
public:
virtual ~CMyView();
protected:
DECLARE_MESSAGE_MAP()
};
其中最重要的是GetDocument和OnDraw。
前者是视图类对象获取文档数据的重要手段,视图类对象通过它来访问文档类对象的数据。
后者是一个视图处理函数,它的作用是用来更新视图的显示。
程序的数据部分交由文档类对象负责,与用户交互的消息处理和显示交由视图类对象负责,那么最后的那个CFrameWnd类所负责的事件就不多了。
它的主要代码如下:
class CMainFrame:public CFrameWnd
{
protected:
CMainFrame();
DECLARE_DYNCREATE(CMainFrame)
public:
virtual ~CMyView();
protected:
DECLARE_MESSAGE_MAP()
};
当然CFrameWnd也从CWnd中得到了很多方法,具体的可以自己去google。
最后,为了把视图对象、框架窗口对象和文档对象组织在一起并统一管理,MFC使用了一个叫做文档模板的抽象类CDocTemplate。它有两个派生类:单文档模板类CSingleDocTemplate和多文档模板类CMultiDocTemplate。
分享到:
相关推荐
MFC学习笔记
MFC学习笔记(onenote格式),一个朋友参加MFC培训,其教师在讲课过程中做的学习日记。图文并茂,是初学者很好的学习资料。
C++、MFC学习笔记!
MFC学习笔记.docx 自己的学习笔记。
这是一个关于 MFC菜单操作学习笔记 的资源,有需要的朋友下载阅读。
这是MFC的学习笔记,很好的。比较容易入门。
价值20000元达内win32加MFC学习笔记.
本人自学MFC期间的学习笔记,分类详细,适合初学者
Visual_C++MFC学习笔记,在你一边听视频一遍查找笔记中的内容,学习C++ MFC会更容易些。
本人从零开始学C++/MFC的时候,积累和整理的学习笔记,其中有大部分常见问题和处理办法,看过很过帖子,也查过很多资料,最终把他们记录下来。 Demo内容: ★ ::OnTimer OnTimer()函数用于实现定时控制功能,定时...
达内MFC课程完整笔记
C++ MFC 学习笔记 对初学者有很大提高
声明:所有代码和程序仅作为参考,各位可自由使用,出现一切后果自负。 博文地址:http://blog.csdn.net/shortcoder/article/details/16370697
MFC学习笔记--案例--销售系统,txt文件存储,格式固定,文件内容增加、删除、修改等,简单控件的使用,文本框,下拉框,表格,界面切换等,缓存,方便以后复习
7.16基于对话框编程对话框是一种特殊类型的窗口,绝大多数Windows程序都通过对话框与用户进行交互 2.1 创建基于对话框的 MFC 应用程序框架程序的创建
学习mfc入门参考,看看吧有点用
MFC的学习笔记,从windows API处理,消息响应机制,MFC框架,MFC内部机制,到MFC控件,MFC类库使用,多线程,DLL,数据库等
深入浅出MFC_简体中文版_侯捷 + 深入浅出MFC笔记(配合原书的好笔记)