ImageVerifierCode 换一换
格式:DOCX , 页数:57 ,大小:204.14KB ,
资源ID:22358518      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22358518.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(5MFC对象的创建Word格式文档下载.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

5MFC对象的创建Word格式文档下载.docx

1、GetNextView GetDocTemplate CView对象 文档对象 GetDocument GetParentFrame CMDIChildWnd或CFrameWnd对象 活动视 GetActiveView 活动视的文档 GetActiveDocument CMDIFrameWnd对象 活动文档边框窗口 MDIGetActive 表5-3 从一个对象通知另一个对象的方法:要通知的对象/动作 通知文档更新所有视 CDocument:UpdateAllViews 更新一个视 CView:OnUpdate CFrameWnd或通知一个视为活动视 OnActivateView 设置一个视为

2、活动视 SetActivateView 可以通过表5-2得到相关对象,再调用表5-3中相应的函数。例如:视在接受了新数据或者数据被修改之后,使用表5-2中的函数GetDocument得到关联文档对象,然后调用表5-3中的文档函数UpdateAllViews更新其他和文档对象关联的视。在表5-2和表5-3中,CView对象指CView或派生类的实例;成员函数列中如果没有指定类属,就是第一列对象的类的成员函数。2. MFC提供的接口 MFC编程就是把一些应用程序特有的东西填入MFC框架。MFC提供了两种填入的方法:一种就是使用前一章论述的消息映射,消息映射给应用程序的各种对象处理各种消息的机会;另

3、一种就是使用虚拟函数,MFC在实现许多功能或者处理消息、事件的过程中,调用了虚拟函数来完成一些任务,这样就给了派生类覆盖这些虚拟函数实现特定处理的机会。下面两节将列出两类接口,有两个目的:一是为了让读者获得整体印象,二是后文将涉及到或者讨论其中的许多函数时,不显得突兀。1. 虚拟函数接口 几乎每一个MFC类都定义和使用了虚拟成员函数,程序员可以在派生类中覆盖它们。一般,MFC提供了这些函数的缺省实现,所以覆盖函数应该调用基类的实现。这里给出一个MFC常用虚拟函数的总览表(见表5-4),更详细的信息或它们的缺省实现动作参见MFC文档。由于基类的虚拟函数被派生类继承,所以在派生类中不作重复说明。覆

4、盖基类的虚拟函数可以通过ClassWizard进行,不过,并非所有的函数都可以这样,有的必须手工加入函数声明和实现。表5-4 常见MFC类的虚拟函数接口类 虚拟函数 覆盖的目的和功能 CCmdTarget OnCmdMsg 发送、派发命令消息 OnFinalRelease OLE用途,引用为0时作清理工作 CWinThread ExitInstance 在线程退出时作清理工作 InitInstance 在线程开始时作初始化 OnIdle 执行thread-specific idle-time处理 PreTranslateMessage 在消息送给Windows函数TranslateMessag

5、e and DispatchMessage.之前进行消息过滤 IsIdleMessage 检查是否是某个特别的消息 ProcessWndProcException 截获线程消息/命令处理中的例外 ProcessMessageFilter 线程消息过滤 Run 实现线程特定的消息循环 CWinApp HideApplication 关闭所有的窗口之前隐藏应用程序 CloseAllDocument 退出程序之前关闭所有文档 转下页 续表 SaveModifiedDocument 框架窗口关闭时用来保存文档 DoMessageBox 实现客户化的messagebox DoWaitCursor 关闭或

6、打开等待光标 OnDDeCommand 响应DDE命令 WinHelp 调用WinHelp函数 CWnd WindowProc 提供一个窗口过程 DefWindowProc 为应用程序不处理的消息提供缺省处理 PostNcDestroy 在窗口销毁之后被消息处理函数OnNcDestroy调用 OnNotify 处理通知消息WM_NOTIFY OnChildNotify 父窗口调用它给控制子窗口一个机会来处理通知反射消息 DoDataExchange Updata调用它来进行对话框数据交换和验证 CFrameWnd GetMessageBar 返回一个指向框架窗口的状态条的指针 OnCreate

7、Client 创建框架的客户窗口 OnSetPreviewMode 设置程序的主框架窗口进入或退出打印预览模式 NegotiateBorderSpace 协调边框窗口的边框空间的大小(OLE用途) CMDIFrameWnd CreateClient 创建CMDIFrameWnd的MDICLIENT窗,被CWnd的消息处理函数OnCreate调用. GetWindowMenuPopup 返回窗口的弹出式菜单 CDialog OnInitDialog 对话框窗口的初始化 OnSetFont 设置对话框控制的文本字体 OnOK 模式对话框的OK按钮按下后进行的处理 OnCancel 模式对话框的CA

8、NCEL按钮按下后进行的处理 CView IsSelected 测试是否有一个文档被选择(OLE支持) 视窗口激活时调用 OnActivateFrame 当包含视窗口的框架窗口变成活动或非活动窗口时调用 OnBeginPrinting 打印工作开始时调用,用来分配GDI资源 OnDraw 用来屏幕显示、打印、打印预览文档内容 OnEndPrinting 打印工作结束时调用,释放GDI资源 OnEndPrintPreview 退出打印预览模式时调用 OnPrepareDC OnDraw或OnPrint之前调用,用来准备设备描述表 OnPreparePrinting 文档打印或者打印预览前调用,可

9、用来初始化打印对话框 OnPrint 用来打印或打印预览文档 用来通知一个视的关联文档内容已经变化 CDocTemplate MatchDocType 确定文档类型和文档模板匹配时的可信程度 CreateNewDocument 创建一个新的文档 CreateNewFrame 创建一个包含文档和视的框架窗口 InitialUpdateFrame 初始化框架窗口,必要时使它可见 SaveAllModified 保存所有和模板相关的而且修改了的文档 CloseAllDocuments 关闭所有和模板相关的文档 OpenDocumentFile 打开指定路径的文件 SetDefaultTitle 设置

10、文档窗口缺省显示的标题 CDocument CanCloseFrame 在关闭显示该文档的边框窗口之前调用 DeleteContents 用来清除文档的内容 OnChangedViewList 在与文档关联的视图被移走或新加入时调用 OnCloseDocument 用来关闭文档 OnNewDocument 用来创建新文档 OnOpenDocument 用来打开文档 OnSaveDocument 以来保存文档 ReportSaveLoadException 处理打开、保存文档操作失败时的例外 GetFile 返回一个指向Cfile对象的指针 ReleaseFile 释放一个文件以便其他应用程序可

11、以使用 SaveModified 用来询问用户文档是否需要保存 PreCloseFrame 在框架窗口关闭之前调用 2. 消息映射方法和标准命令消息 窗口对象可以响应以“WM_”为前缀的标准Windows消息,消息处理函数名称以“ON”为前缀。不同类型的Windows窗口处理的Windows消息是有所不同的,因此,不同类型的MFC窗口实现的消息处理函数也有所不同。例如,多文档边框窗口能处理WM_MDIACTIVATE消息,其他类型窗口就不能。程序员从一定的MFC窗口派生自己的窗口类,对感兴趣的消息,覆盖基类的消息处理函数,实现自己的消息处理函数。所有的命令目标(CCmdTarger或导出类对象

12、)可以响应命令消息,程序员可以指定应用程序对象、框架窗口对象、视对象或文档对象等来处理某条命令消息。一般地,尽量由与命令消息关系密切的对象来处理,例如隐藏/显示工具栏由框架窗口处理,打开文件由应用程序对象处理,数据变化的操作由文档对象处理。对话框的控制子窗口可以响应各类通知消息。对于命令消息,MFC实现了一系列标准命令消息处理函数。标准命令ID在afxres.h中定义。表5-5列出了MFC标准命令的实现,从ID或者函数名可以大致地看出该函数的目的、功用,具体的实现有的后续章节会讲解,详细参见MFC技术文档。程序员可以自己来处理这些标准消息,也可以通过不同的类或从不同的类导出自己的类来处理这些消

13、息,不过最好遵循MFC的缺省实现。比如处理ID_FILE_NEW命令,最好由CWinApp的派生类处理。表5-5 标准命令消息处理函数ID 函数 实现函数的类 ID_FILE_NEW OnFileNew ID_FILE_OPEN OnFileOpen ID_FILE_CLOSE OnFileClose ID_FILE_SAVE OnFileSave ID_FILE_SAVE_AS OnFileSaveAs ID_FILE_SAVE_COPY_AS OnFileSaveCopyAs COleServerDoc ID_FILE_UPDATE OnUpdateDocument ID_FILE_PAG

14、E_SETUP OnFilePrintSetup ID_FILE_PRINT OnFilePrint ID_FILE_PRINT_PREVIEW OnFilePrintPreview ID_FILE_MRU_FILE1.FILE16 OnUpdateRecentFileMenu ID_EDIT_CLEAR CView没有实现, ID_EDIT_CLEAR_ALL 但是,如果有实现 ID_EDIT_COPY 函数,就是派生类 ID_EDIT_CUT CEditView的 ID_EDIT_FIND 实现函数 ID_EDIT_PASTE_LINK ID_EDIT_PASTE_SPECIAL ID_E

15、DIT_REPEAT ID_EDIT_REPLACE ID_EDIT_SELET_ALL ID_EDIT_UNDO ID_WINDOW_NEW OnWindowNew ID_WINDOW_ARRANGE OnMDIWindowCmd ID_WINDOW_CASCADE ID_WINDOW_TILE_HORZ ID_WINDOW_TILE_VERT ID_WINDOW_SPLIT CSplitterWnd ID_APP_ABOUT ID_APP_EXIT OnAppExit ID_HELP_INDEX OnHelpIndex ID_HELP_USING OnHelpUsing ID_CONTEX

16、T_HELP OnContextHelp ID_HELP OnHelp ID_DEFAULT_HELP ID_NEXT_PANE OnNextPaneCmd ID_PREV_PANE ID_OLE_INSERT_NEW ID_OLE_EDIT_LINKS ID_OLE_VERB_FIRST.LAST ID_VIEW_TOOLBAR ID_VIEW_STATUS_BAR ID_INDICATOR_CAPSID_INDICATOR_NUMID_INDICATOR_SCRLID_INDICATOR_KANA OnUpdateKeyIndicator 3. MFC对象的创建过程 应用程序使用MFC的接

17、口是把一些自己的特殊处理填入MFC框架,这些处理或者在应用程序启动和初始化的时候被调用,或者在程序启动之后和用户交互的过程中被调用,或者在程序退出和作清理工作的时候被调用。这三个阶段中,和用户交互阶段是各个程序自己的事情,自然都不一样,但是程序的启动和退出两个阶段是MFC框架所实现的,是MFC框架的一部分,各个程序都遵循同样的步骤和规则。显然,清楚MFC框架对这两个阶段的处理是很有必要的,它可以帮助深入理解MFC框架,更好地使用MFC框架,更有效地实现应用程序特定的处理。MFC程序启动和初始化过程就是创建MFC对象和Windows对象、建立各种对象之间的关系、把窗口显示在屏幕上的过程,退出过程

18、就是关闭窗口、销毁所创建的Windows对象和MFC对象的过程。所以,下面要讨论几种常用MFC对象的结构,它们是构成一个文档-视模式应用程序的重要部件。1. 应用程序中典型对象的结构 本节将主要分析应用程序对象、文档对象、文档模板等的数据结构。通过考察类的结构,特别是成员变量结构,弄清它的功能、目的以及和其他类的关系;另外,在后续有关分析中必定会提到这些成员变量,这里先作个说明,到时也不会显得突兀。下面几节以表格的形式来描述各个类的成员变量。表格中,第一列打钩的表示是MFC类库文档有说明的;没打钩的在文档中没有说明,如果是public,则可以直接访问,但随着MFC版本的变化,以后MFC可能不支

19、持这些成员;第二列是访问属性;第三列是成员变量名称;第四列是成员变量的数据类型;第五列是对成员变量的功能、用途的简要描述。1. 应用程序类的成员变量 应用程序对象的数据成员表由两部分组成,第一部分是CWinThread的成员变量,如表5-6所示,CWinApp继承了CWinThread的数据成员。第二部分是CWinApp自己定义的成员变量,如表5-7所示。表5-6 CwinThread的成员变量访问限制 变量名称 类型 解释 public m_bAutoDelete BOOL 指定线程结束时是否销毁线程对象本身 m_hThread HANDLE 当前线程的句柄 m_nThreadID UINT

20、 当前线程的ID m_pMainWnd CWnd* 指向应用程序主窗口的指针 m_pActiveWnd 当OLE SERVER就地激活时指向客户程序主窗口的指针 m_msgCur MSG 当前消息(MSG结构) m_pThreadParams LPVOID 传递给线程开始函数的参数 m_pfnThreadProc 函数指针1 线程开始函数,AFX_THREADPROC类型 m_lpfnOleTermOrFreeLib 函数指针2 OLE用途,void (AFXAPI * fn)(BOOL,BOOL) m_pMessageFilter 指针 OLE消息过滤,指向COleMessageFilter

21、对象 protected m_ptCursorLast CPoint 最新鼠标位置 m_nMsgLast 消息队列中最新接收到的消息 表5-7 CWinApp的成员变量m_pszAppName LPCTSTR 应用程序名称 m_hInstance HINSTANCE 标志应用程序当前实例句柄 m_hPrevInstance 32位程序设为空 m_lpCmdLine LPTSTR 指向应用程序的命令行字符串 m_nCmdShow int 指定窗口开始的显示方式 m_bHelpMode 标识用户是否在上下文帮助模式 m_pszExeName 应用程序的模块名 m_pszHelpFilePath 应

22、用程序的帮助文件名,缺省时同模块名 m_pszProfileName 应用程序的INI文件名,缺省时同应用程序名 m_pszRegistryKey Register入口,如果不指定,使用INI文件。 m_pDocManager;CDocManager * 指向一个文档模板管理器 m_hDevMode HGLOBAL 打印设备模式 m_hDevNames 打印设备名称 m_dwPromptContext DWORD 被MESSAGE BOX覆盖的帮助上下文 m_nWaitCursorCount 等待光标计数 m_hcurWaitCursorRestore HCURSOR 保存的光标,在等待光标之

23、后恢复 m_pRecentFileList 指向CRecentFileList对象,最近打开的文件列表 m_atomApp ATOM DDE用途 m_atomSystemTopic m_nNumPreviewPages 缺省被打印的页面 m_nSafetyPoolSize size_t 理想尺寸 m_lpfnDaoTerm 函数指针 DAO初始化设置时使用 2. CDocument的成员变量 表5-8 文档对象的属性。m_strTitle CString 文档标题 m_strPathName 文档路径 m_pDocTemplate CDocTemplate* 指向文档模板的指针 m_viewList CPtrList 关联的视窗口列表 m_bModified 文档是否有变化、需要存盘 关联视都关闭时是否删除文档对象 m_bEmbedded 文档是否由OLE创建

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1