没有合适的资源?快使用搜索试试~ 我知道了~
用Windows API(SDK)实现图形化HellowWorld程序。
需积分: 0 3 下载量 111 浏览量
2009-07-09
11:37:59
上传
评论
收藏 1.11MB DOC 举报
温馨提示
试读
39页
Windows程序采用如下图所示的事件驱动编程模型,应用程序通过处理操作系统发送出来的消息来响应事
资源详情
资源评论
资源推荐
实验一、HelloWorld 在 VS2005 上的
实现
1.1 实验目的
掌握 Windows 程序基本的运行原理。
学会编写简单的 Windows 程序。
1.2 实验平台
Windows XP professional 操作系统。
VS2005 集成开发环境。
1.3 实验内容
用 Windows API(SDK)实现图形化 HellowWorld 程序。
用 MFC 类库实现图形化 HellowWorld 程序。
1.4 实验原理
Windows 操作介绍
Windows 是一种基于图形界面的多任务操作系统。对于普通用户来说, Windows 图形化界
面友好、操作简单,用户不需要花费长时间学习如何使用计算机和新程序,因为所有的
Windows 应用程序都具相近的外观和感觉;对于程序员来说,标准化的图形用户界面来自
于 Windows 构造菜单和对话框的内置程序,这些工作由 Windows 处理,与应用程序无关,
使程序员可以编写出易于用户操作的程序。
Windows 编程模型
Windows 程序采用如下图所示的事件驱动编程模型,应用程序通过处理操作系统发送出来
的消息来响应事件。消息处理是所有 Windows 应用程序的的核心。Windows 程序的进入点
是 WinMain 函数,但大多时候操作是在成为窗口过程的函数中进行的。窗口过程函数处理
发送给窗口的消息。WinMain 创建该窗口并进入消息循环,即获取消息或将其调度给窗口
过程。消息被检索之前处于消息队列中等待。
Windows 定义了成百上千个不同的消息类型。大多数消息的开始字符为“WM并
带有下划线;
操作系统是通过消息机制(Message)来实现将事件传递给应用程序的。操作系统将
每 个 事 件 都 包 装 成 一 个 称 为 消 息 的 结 构 体 MSG 来 传递 给 应 用 程 序 ( 详 见
MSDN)。
操作系统把它所能够完成的功能以函数的形式提供给应用程序使用,应用程序对
这些函数的调用就叫做系统调用,这些函数的集合就是 Windows 操作系统提供给
应用程序编程的接口(Application Programming Interface),简称 Windows API(C 函
数)。
MFC 简介
MFC(Microsoft Foundation Class)是微软公司提供的专门用于 Windows 编程的基础类库,
它大约包含了 200 个 C++类,这些类库实际上是对 Windows API 的一次 C++的封装。这些
类可以处理许多标准的 Windows 编程任务。MFC 框架结构如下图所示:
1. CObject 类
CObject 类是 MFC 类库的根类,它几乎描述了 MFC 类的一些公共特性。
2. CCmdTarget 类
CCmdTarget 类是 MFC 的消息映射基础类,MFC 为该类设计了许多的成员变量及函数
以解决消息映射的问题。派生于 CCmdTarget 的类可用于处理当用户选择菜单或单击按
钮等操作时所产生的 Command 消息。
3. CWinThread 类
CWinThread 类是 MFC 中用于封装线程的类,它的成员函数可以使 MFC 应用程序创建
和管理包括 UI 及工作者在内的线程。每个 MFC 应用程序都至少应该使用一个从
CWinThread 派生的类,应用程序类 CWinApp 就是一个代表。
4. CWinApp 类
CWinApp 类通常代表应用程序自己,它封装了应用程序的初始化、运行及终止的过程 。
基于框架的应用程序必须有且仅有一个派生于 CWinApp 的类的对象,并在完成窗口的
创建工作之前执行对该对象的构造。
应用程序类的对象需要完成以下工作:
初始化应用程序。
建立文档模板结构。
循环检索消息队列中的消息并将这些消息发送到指定的地方。
执行应用程序退出时的清理工作。
5. CDocument 类
CDocument 类是在使用文档/视图结构的应用程序中文档对象的基类,它为应用程序的
文档对象提供了基本的功能,包括新建、串行化数据等。
6. CWnd 类
CWnd 类是所有 MFC 窗口的基类,它封装了窗口的基本操作,包括窗口的创建、销毁、
设置窗口风格等,以及窗口对大部分消息的默认响应。开发人员可以直接从 CWnd 派
生其他类,但通常情况下我们并不这么做,而是通过继承 CWnd 的派生类生成新类。
7. CView 类
CView 类是在使用文档/视图结构的应用程序中视图对象的基类,它是用户的主要操作
界面。在应用程序中,一个视图对象通常只对应一个文档对象,但一个文档对象却可
以关联多个视图对象,并且每个视图对象都以不同的形式来显示文档中的数据。
8. CFrameWnd 类
CFrameWnd 类往往用于创建应用程序的主窗口,并定义了大量管理视图和文档对象的
成 员 函 数 及 变 量 。 在 编 写 文 档 / 视 图 结 构 的 应 用 程 序 时 , 视 图 对 象 等 将 作 为
CFrameWnd 的子窗口实现对客户区的共享,并被 CFrameWnd 有序排列。
9. CDocTemplate 类
CDocTemplate 类是 AppWizard 生成的文档模板类。
MFC 应用程序执行过程:
MFC 应用程序启动时,首先创建应用程序对象theApp。这时将自动调用应用程序类
的构造函数初始化对象theApp,然后由应用程序框架调用MFC 提供的AfxWinMain( )
主函数。在AfxWinMain( )主函数中,首先通过调用全局函数AfxGetApp( )来获取
theApp 的指针pApp,然后通过该指针调用theApp 的成员函数InitInstance( )来初始化应
用程序。在应用程序的初始化过程中,同时还构造了文档模板,产生最初的文档、视
图和主框架窗口,并生成工具栏和状态栏。当InitInstance( )函数执行完毕后,
WinMain( )函数将调用成员函数 Run( ),进入消息处理循环,直到函数Run( )收到
WM_QUIT 消息。MFC 首先调用CWinApp 类的成员函数ExitInstance( ),然后调用静
态对象的析构函数,包括CWinApp 对象,最后退出应用程序,将控制权交给操作系统。
任何—个对象都可以通过调用全局函数AfxGetApp( )或AfxGetInstanceHandle( )来获取
应用程序对象;通过调用全局函数AfxGetMainWnd( )来获得程序主窗口。
消息映射与消息处理
消息映射是将消息处理函数与它要处理的特定消息连接起来的一种机制。消息映射是
应用MFC 方法进行Windows 编程的主要组成部分。
Windows 消息主要有3 种类型,即标准Windows 消息、控件消息和命令消息。
标准Windows 消息
除 WM_COMMAND 以外,所有以“WM_为前缀的消息都是标准Windows
消息。标准的Windows 消息由窗口类或视图类处理。标准Windows 消息都
有默认的处理函数,这些函数在CWnd 类中进行了预定义。MFC 类库以消
息名为基础形成这些处理函数的名称,这些函数的名称都以前缀“On开始。
有的处理函数不带参数,有的带几个参数。这些消息处理函数的说明一般
都有“afx_msg的前缀,用于把处理函数与其他的窗口成员函数区分开来,
这些函数都是通过消息映射实现的。
标准的 Windows 消息又分为3 类:键盘消息、鼠标消息和窗口消息
a) 键盘消息
键盘消息与键盘某个键的动作相关联。常见的键盘消息有以下几种。
WM_KEYDOWN、WM_KEYUP:按下、释放非系统键产生的消息。
WM_CHAR:输入非系统字符时产生的消息。
所有键盘消息处理函数的原型都很相似。我们以WM_CHAR 消息的处
理函数OnChar( )为例来进行说明。此函数的原型如下:
afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT
nFlags);
其中,参数nChar 是所按键的字符代码值;nRepCnt 表示用户重复击键
的次数;nFlags表示扫描码、先前键状态和键转换状态等,其具体含义
见下表:
b) 鼠标消息
常用的鼠标消息有以下几种。
WM_MOUSEMOVE:鼠标移动时产生的消息。
WM_RBUTTONDOWN:鼠标右键按下时产生的消息。
WM_LBUTTONDOWN:鼠标左键按下时产生的消息。
WM_LBUTTONDBLCLICK:鼠标双击时产生的消息。
所有鼠标操作的处理函数都有很相似的原型,它们都有两个参数。我们
以处理鼠标左键按下消息的函数OnLButtonDown( )为例来进行说明。此
函数的原型如下:
afx_msg void OnLButtonDown(UINT nFlags,CPoint
point);
其中参数 point 是鼠标事件发生时鼠标光标所在的位置。它是相对于窗
口左上角的水平X 坐标和垂直的Y 坐标而言的。参数nFlags 指明鼠标按
键的状态以及鼠标事件发生时键盘上某些键的状态,每一状态都可以用
nFlags 的一位来表示,具体含义见下表:
c) 窗口消息
窗口消息一般与创建窗口、绘制窗口、移动窗口和销毁窗口等动作有关。
在 MFC 应用程序中,窗口消息是由视图类、窗口类及它们的派生类处
理的。常见的窗口消息如下。
WM_PAINT:当客户区产生移动或者显示事件,当用户窗口产生改
变大小事件,当产生下拉菜单关闭并需要恢复被覆盖部分事件,当产生
Windows 清除对话框或者消息框并需要恢复被覆盖部分事件时,会产生
WM_PAINT 消息。
它的消息处理函数原型为:
afx_msg void OnPaint();
剩余38页未读,继续阅读
Cnhe1314
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0