MFC教程(5)-- MFC对象的创建(1)

MFC对象的创建

前面几章介绍了MFC的核心概念和思想,即介绍了MFC对Windows对象的封装方法和特点;MFC对象的动态创建、序列化;MFC消息映射机制。

现在,考查MFC的应用程序结构体系,即以文档-视为核心的编程模式。学习本章,应该弄清楚以下问题:

MFC中诸多MFC对象的关系:应用程序对象,文档对象,边框窗口对象,文档边框窗口对象,视对象,文档模板对象等。

MFC对象的创建和销毁:由什么对象创建或销毁什么对象,何时创建,何时销毁?

MFC提供了那些接口来支持其编程模式?

MFC对象的关系

创建关系


这里讨论应用程序、文档模板、边框窗口、视、文档等的创建关系。图5-1大略地表示了创建顺序,但表5-1更直接地显示了创建与被创建的关系。

表5-1 MFC对象的创建关系


创建者


被创建的对象


应用程序对象


文档模板


文档模板


文档


文档模板


边框窗口


边框窗口


交互作用关系

应用程序对象有一个文档模板列表,存放一个或多个文档模板对象;文档模板对象有一个打开文档列表,存放一个或多个已经打开的文档对象;文档对象有一个视列表,存放显示该文档数据的一个或多个视对象;还有一个指针指向创建该文档的文档模板对象;视有一个指向其关联文档的指针,视是一个子窗口,其父窗口是边框窗口(或者文档边框窗口);文档边框窗口有一个指向其当前活动视的指针;文档边框窗口是边框窗口的子窗口。

Windows 管理所有已经打开的窗口,把消息或事件发送给目标窗口。通常,命令消息发送给主边框窗口。


图5-2大略地表示了上述关系:

时间: 2024-12-30 21:20:44

MFC教程(5)-- MFC对象的创建(1)的相关文章

MFC教程(5)-- MFC对象的创建(2)

从这些图中可以看到何时.何处调用了什么消息处理函数和虚拟函数,这些函数用来作了什么事情.必要的话,程序员可以在派生类覆盖它们. 在创建工作完成之后,进行初始化,使用文档对象的数据来更新视和显示窗口. 至此,本节描述了MFC的SDI程序从分析命令行到创建或打开文件的处理过程,文档对象已经动态创建.总结如下: 命令行分析→应用程序的FileNew→文档模板的OpenDocumentFile(NULL)→文档的OnNewDocument 命令行分析→应用程序的FileOPen→文档模板的OpenDoc

MFC深入浅出-MFC对象的创建

MFC对象的创建   前面几章介绍了 MFC的核心概念和思想,即介绍了MFC对Windows对象的封装方法和特点:MFC对象的动态创建.序列化:MFC消息映射机制.   现在,考查 MFC的应用程序结构体系,即以文档-视为核心的编程模式.学习本章,应该弄清楚以下问题:   MFC 中诸多MFC对象的关系:应用程序对象,文档对象,边框窗口对象,文档边框窗口对象,视对象,文档模板对象等.   MFC 对象的创建和销毁:由什么对象创建或销毁什么对象,何时创建,何时销毁?   MFC 提供了那些接口来支

变量-使用MFC单文档,怎样创建一个类并在里面填写函数

问题描述 使用MFC单文档,怎样创建一个类并在里面填写函数 使用MFC单文档,现在想新建一个类(系统初始已经创建好doc/view等类),并把NavView.cpp里面的变量传入这个新类里面,并创建一个函数处理这个变量,请问应该怎么操作? 1.应该创建什么基类?2.怎样把变量传到新建的类里面?3.怎样把新建基类里面的变量值传到其他类里面? 解决方案 从类向导里边就可以创建一个新的类.为这个类指定一些友元函数,设置Public权限就可以了.如果只是单纯的传变量,那么直接把类变量权限设置为公有的就可

MFC教程(1)--MFC概述

MFC是一个编程框架 MFC (Microsoft Foundation Class Library)中的各种类结合起来构成了一个应用程序框架,它的目的就是让程序员在此基础上来建立Windows下的应用程序,这是一种相对SDK来说更为简单的方法.因为总体上,MFC框架定义了应用程序的轮廓,并提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓.Microsoft Visual C++提供了相应的工具来完成这个工作:AppWizard可以用来生成初步

MFC教程(9)-- MFC的进程和线程(2)

下面以一个动态链接到MFC DLL的单模块应用程序为例,说明这些对象的创建过程. 当第一次访问状态信息时,比如使用 AfxGetModuleState得到模块状态,导致系列创建过程的开始,如图9-7所示. 首先分析语句pState=_afxThreadState.如果_afxThreadData.线程状态和模块状态还没有创建,该语句可以导致这些数据的创建. pState声明为CNoTrackObject对象的指针,_afxThreadState声明为一个模板CThreadLocal的实例,pSt

MFC教程(13)-MFC工具条和状态栏(1)

Windows控制窗口 Windows (Windows95或者以上版本) 提供了系列通用控制窗口,其中包括工具条(ToolBar).状态栏(StatusBar).工具条提示窗口(ToolTip). Windows在一个DLL加载时注册个控制窗口的"窗口类".例如,工具条的"窗口类"是"ToolbarWindow32",状态栏的"窗口类"是"msctls_statusbar32",工具条提示窗口的"

vc-关于mfc控件关联对象的问题

问题描述 关于mfc控件关联对象的问题 对话框上有一个控件button,那么系统应该维护了一个对象可以来控制button,不如: getdlgitem(button)可以对button操作,如果自己写一个类mybutton继承button类, 在把button控件与mybutton类关联,那么就可以用这个类来操作button,那是不是可以说系统维护的button对象和关联为mybutton都可以控制button这个控件了.不知道怎么理解,希望大虾帮助,不知道哪里理解有误~! 解决方案 用ctrl

MFC不使用对话框资源模版创建对话框

在MFC程序中使用对话框时首先在资源模版里创建对话框资源,然后DoModal()或者CReate显示出模式对话框或者非模式对话框,这样创建出的对话框移植性差,从一个工程移动到另一个工程比较麻烦.     在MFC中还有另一种创建对话框的方法:1 在内存中建立对话框资源模版DLGTEMPLATE结构体.2 使用InitModalIndirect API函数即可创建模式对话框,非模式对话框使用CreateDialog API函数创建. 代码如下:   // 创建内存对话框资源模版类,H文件 #pra

mfc-大神们,新年快乐!!!我用MFC编写的串口助手,创建多线程,烦请帮忙看下哪里有问题呢,为什么不能显示

问题描述 大神们,新年快乐!!!我用MFC编写的串口助手,创建多线程,烦请帮忙看下哪里有问题呢,为什么不能显示 数据丢包是因为编辑框显示荒废时间,所以我把编辑框显示放到线程里面,可以不能与接收数据同步正确的显示,还会出现停止运行的错误,狂帮帮忙,看下,呜呜!!!! 解决方案 内存指针的问题,仔细调试下.