正在加载图片...
9单元 WINDOWS编程 应,处理完毕后又返回处于等待消息的状态。使用事件驱动原理的程序的工作流程如图9-1 所示 事件驱动围绕着消息的产生与处理展开,事件驱动是靠消息循环机制来实现的。消息是 种报告有关事件发生的通知。 Windows应用程序的消息来源有以下四种 (1)输入消息:包括键盘和鼠标的输入。这一类消息首先放在系统消息队列中,然后 由 Windows将它们送入应用程序消息队列中,由应用程序来处理消息 (2)控制消息:用来与 Windows的控制对象,如列表框、按钮、检查框等进行双向通 信。当用户在列表框中改动当前选择或改变了检查框的状态时发出此类消息。这类消息一般 不经过应用程序消息队列,而是直接发送到控制对象上去 (3)系统消息:对程序化的事件或系统时钟中断作出反应。一些系统消息,象DDE 消息(动态数据交换消息)要通过 Windows的系统消息队列,而有的则不通过系统消息队 列而直接送入应用程序的消息队列,如创建窗口消息 (4)用户消息:这是程序员自己定义并在应用程序中主动发出的,一般由应用程序的 某一部分内部处理。 92MFC编程 Microsoft提供了一个基础类库MFC( Microsoft Foundation Class),其中包含用来开发 C++应用程序和 Windows应用程序的一组类。这些类用来表示窗口、对话框、设备上下文、 公共GDI对象如画笔、调色板、控制框和其他标准的 Windows部件,封装了大部分的 Windows apl( Application Programming Interface:应用程序接口)。使用MFC,可以大大 简化 Windows编程工作 MC中的类可分为两种: CObject类的派生类及非 CObject派生类。非 CObject派生类 数量不多,但大都很常用。几个常用的非 CObject派生类如 CTime, TImesPan, CString 和CFe已分别在第7单元和第8单元中介绍过 CObject派生类的基本特征为:支持序列化( Serialize,应用见第13单元)、运行时类 信息访问( Dynamic,应用见第12单元)、对象诊断输出(参看10.64:“ CObject:Dump ()成员函数”)和与集合类兼容(参看12.7:“集合类”)等 MFC将 Windows应用程序从开始运行、消息传递到结束运行所需的各步骤均封装在 WinAmp类中, CWinApp类表示MFC应用程序的应用对象。 CWinApp类从 CObject类的 子类 CWin Thread类(定义MC内的线程行为)派生。一个MFC应用程序必须有且只能有 一个从 WinAmp类派生的全局应用程序对象,此对象在运行时刻控制应用程序中所有其他对 象的活动 典型的 Windows应用程序结构有以下四种: (1)控制台应用程序:在本教程第1单元到第8单元介绍的所有程序均为控制台应用 程序。控制台应用程序结构简单,可以不使用MFC类库, 2)基于框架窗口的应用程序:某些应用程序仅需最小的用户界面和简单的窗口结构, 这时可使用基于框架窗口的方案。在此方案中,主应用程序窗口为框架窗口,第 9 单元 WINDOWS 编程 - 175 - 应,处理完毕后又返回处于等待消息的状态。使用事件驱动原理的程序的工作流程如图 9-1 所示。 事件驱动围绕着消息的产生与处理展开,事件驱动是靠消息循环机制来实现的。消息是 一种报告有关事件发生的通知。Windows 应用程序的消息来源有以下四种: (1)输入消息:包括键盘和鼠标的输入。这一类消息首先放在系统消息队列中,然后 由 Windows 将它们送入应用程序消息队列中,由应用程序来处理消息。 (2)控制消息:用来与 Windows 的控制对象,如列表框、按钮、检查框等进行双向通 信。当用户在列表框中改动当前选择或改变了检查框的状态时发出此类消息。这类消息一般 不经过应用程序消息队列,而是直接发送到控制对象上去。 (3)系统消息:对程序化的事件或系统时钟中断作出反应。一些系统消息,象 DDE 消息(动态数据交换消息)要通过 Windows 的系统消息队列,而有的则不通过系统消息队 列而直接送入应用程序的消息队列,如创建窗口消息。 (4)用户消息:这是程序员自己定义并在应用程序中主动发出的,一般由应用程序的 某一部分内部处理。 9.2 MFC 编程 Microsoft 提供了一个基础类库 MFC(Microsoft Foundation Class),其中包含用来开发 C++应用程序和 Windows 应用程序的一组类。这些类用来表示窗口、对话框、设备上下文、 公共 GDI 对象如画笔、调色板、控制框和其他标准的 Windows 部件,封装了大部分的 Windows API(Application Programming Interface:应用程序接口)。使用 MFC,可以大大 简化 Windows 编程工作。 MFC 中的类可分为两种:CObject 类的派生类及非 CObject 派生类。非 CObject 派生类 数量不多,但大都很常用。几个常用的非 CObject 派生类如 CTime,CTimeSpan,CString 和 CFile 已分别在第 7 单元和第 8 单元中介绍过。 CObject 派生类的基本特征为:支持序列化(Serialize,应用见第 13 单元)、运行时类 信息访问(Dynamic,应用见第 12 单元)、对象诊断输出(参看 10.6.4:“CObject::Dump ()成员函数”)和与集合类兼容(参看 12.7:“集合类”)等。 MFC 将 Windows 应用程序从开始运行、消息传递到结束运行所需的各步骤均封装在 CWinApp 类中,CWinApp 类表示 MFC 应用程序的应用对象。CWinApp 类从 CObject 类的 子类 CWinThread 类(定义 MFC 内的线程行为)派生。一个 MFC 应用程序必须有且只能有 一个从 WinApp 类派生的全局应用程序对象,此对象在运行时刻控制应用程序中所有其他对 象的活动。 典型的 Windows 应用程序结构有以下四种: (1)控制台应用程序:在本教程第 1 单元到第 8 单元介绍的所有程序均为控制台应用 程序。控制台应用程序结构简单,可以不使用 MFC 类库。 (2)基于框架窗口的应用程序:某些应用程序仅需最小的用户界面和简单的窗口结构, 这时可使用基于框架窗口的方案。在此方案中,主应用程序窗口为框架窗口
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有