文档详情

MFC应用程序概述.ppt

发布:2019-12-22约1.02万字共73页下载文档
文本预览下载声明
第3章 MFC应用程序概述 MFC应用程序概述 Windows 应用程序概述 MFC应用程序框架 文档/视图结构 消息映射 3.1 Windows 应用程序概述 3.1.1 窗口编程基础 窗口 消息和消息队列 事件驱动的程序设计 资源管理 1. 窗口(Window) 窗口是应用程序与用户交互的界面 窗口元素以对象方式组织 一个应用程序由多个窗口组成 程序运行过程是窗口之间,窗口与系统,窗口与用户之间交换并处理数据的过程。 2. 窗口的界面元素 消息(Message)和消息队列 消息用于通知某个事件的产生 消息机制  MSG 消息的类型 消息(Message)和消息队列 Windows应用程序是利用消息与其他Windows应用程序和操作系统进行信息交换的。 消息的作用是通知一个应用程序某个确定的事件的产生。 应用程序对该事件做出响应,即编写相应的消息处理代码。 举例:按下鼠标左键时,系统会产生WM_LBUTTONDOWN消息 消息(Message)和消息队列 Windows应用程序接受系统队列传递过来的消息的步骤: (1)每个Windows应用程序都有一个WinMain( )函数,在该函数中会定义一个窗口句柄,当应用程序启动时,会使该窗口句柄注册,操作系统使用窗口句柄与Windows应用程序通信。 消息(Message)和消息队列 (2)Windows应用程序创建一个或多个窗口,每个窗口都有一个窗口处理函数(WndProc),负责窗口显示和响应用户输入。 (3)消息映射(Message Mapping):负责从消息队列中取消息,并送回窗口,由窗口处理函数选择合适的消息处理函数响应消息。 消息机制 消息机制是Windows应用程序运行的核心工作机制,用如下结构体MSG表示: typedef struct tagMSG { HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD time; POINT pt; }MSG; MSG结构体成员说明: (1)hwnd 接收消息的窗口句柄。 (2)Message 消息值,每个windows消息都有一个消息值,该值由windows.h头文件的宏定义来标识。 (3) wParam和lParam 包含有关消息的附加信息,它随消息的不同而不同。 (4)Time 指定消息送至队列的时间界限。 (5)pt 指定消息发送时屏幕光标的位置,结构如下: typedef struct tagPOINT { LONG x; LONG y; POINT; } 消息的类型 1.输入消息 由键盘和鼠标操作产生输入消息。这类消息首先放在系统消息队列中,后由Windows操作系统将他们放到应用程序消息队列中,由应用程序处理消息。 2.控件消息 用户操作窗口对象时产生控件消息,这类消息一般不进入应用程序消息队列,而直接发送到控件对象所属的对话框窗口 消息的类型 3.系统消息 对程序化的事件或系统时钟中断做出的放映。一类例如DDE(动态数据交换消息)要通过Windows的系统消息队列,送入应用程序的消息队列,另一类直接送入应用程序的消息队列,例如创建窗口消息。 4.用户消息 是程序员自己定义并在应用程序中主动发出的,一般由应用程序的某一部分做内部处理。 3. 事件驱动的程序设计 Windows操作系统下的Windows应用程序采用事件驱动的程序设计,与Dos操作系统下面向过程有明显不同。 事件驱动的程序的逻辑顺序是按事件的产生而决定的。 事件的产生不是预先定义的,有着随机性 。 3. 事件驱动的程序设计 例1、一个应用程序的功能是体操全能比赛项目运动成绩管理,体操全能包括4个项目,在一个驱动中需要如下步骤: (1)输入第一项运动员的成绩。 (2)输入第二项运动员的成绩。 (3)输入第三项运动员的成绩。 (4)输入第四项运动员的成绩。 (5)计算每个运动员的总分。 (6) 按总分排名。 4. 资源管理 资源的类型 用户自定义资源 菜单 对话框 工具栏 系统资源 设备上下文 画刷 画笔 字体 通信端口 3.1.2 Windows应用程序组成 一个应用程序是如何开始? 操作系统创建一个新的进程和一个初始线程 应用程序代码装载到内存 动态链接库装载到内存(如果需要使用DLL) 为数据和堆栈分配物理内存,并映射到虚拟内存 应用程序开始执行 3.1.2 Windows应用程序组成 Windows应用程
显示全部
相似文档