VCWin32API编程简介及游戏开发演示课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
? MFC封装了大部分API函数,并提供了一个应 用程序框架,简化了和标准了windows程序 设计。
? 但Windows API编程方法始终是windows编 程的基础。
5
1.2 窗口
? 编写一个Windows应用程序首先应创建一个 或多个窗口,而后应用程序的运行过程即是窗 口内部、窗口与窗口之间、窗口与系统之间进 行数据处理与数据交换的过程。
? 1.鼠标消息,主要有: ? WM_LBUTTONDOWN:产生单击鼠标左键的消息。 ? WM_LBUTTONUP:放开鼠标左键时产生的消息。 ? ……
? 2.键盘消息,主要有: ? WM_KEYDOWN:按下一个系统键时产生的消息。 ? WM_KEYUP:放开一个系统键时产生的消息。 ? ……
? 3.窗口消息,主要有: ? WM_CREATE:窗口创建时,由CreateWindows函数 发出的消息。 ? WM_CLOSE:关闭窗口时产生的消息。 ? WM_QUIT:退出应用程序时,由PostQuitMessage函 数发出消息。
? windows系统对每个窗口的执行称为一个实例,用一个 实例句柄来唯一标识。
? WinMain()函数与DOS程序的main()函数起同样的作用, 有一点不同的是,WinMain()函数必须带有四个参数,它 们是系统传递给它的。
3
1.1 Windows API编程基础
? Windows编程的方法主要有两种方法:
? 传统编写法:利用 API函数。 ? 交互式方法:利用 MFC类库。
? 为使程序员编写具有Windows风格的应用程序, Windows提供了一个应用程序编程接口(Application Programming Interface,简称API),它是Windows 系统与Windows应用程序间的标准程序接口。
? 上千个API函数包含了各种窗口类和系统资源。
? API可以为应用程序提供windows系统特殊函数及数 据结构。
? windows应用程序可以利用大量API函数调用系统功
能。
4
MFC
? MFC, Microsoft Foundation Class Library, 微软基础类库,约有200个类。
? ……
12
2.Windows应用程序的组成与编程
? 2.1 典型的Windows程序结构 ? 2.2 入口函数WinMain() ? 2.3 窗口函数WinProc() ? 2.4 windows应用程序的常用数据类型 ? 2.5 API编程实例
13
2.1 典型的Windows程序结构
? Windows应用程序的主体由以下两个函数完成:
VC++ win32 API 游戏开发
1
VC++ win32 API 游戏开发
? 1.Windows 编程 ? 2.Windows应用程序的组成与编程 ? 3. 游戏实现原理与Window GDI绘图 ? 4.游戏实例的剖析
2
1.Windows编程
? 1.1 Windows API编程基础 ? 1.2 窗口 ? 1.3 事件驱动 ? 1.4 句柄 ? 1.5 消息 ? 1.6 Windows应用程序的常用消息
? WinMain()函数负责建立窗口和建立消息循环。 ? WinProc()函数负责消息的处理。
14
2.1 典型的Windows程序结构
程序否有消息?
是
WinMain()函数负责
WinProc()函数负责
否 退出消息?
是 程序结束,关闭窗口
应用程序 处理消息?
是 处理消息
9
1.5 消息
? 消息是描述事件发生的信息。 ? Windows应用程序通过消息进行信息交换。 ? 在Windows中,消息用结构体MSG表示,其结构如下: ? Typedef struct tagMSG ? { HWND hwnd; //窗口句柄 ? UNIT message; //消息号。 ? WPARAM wParam;//用于提供消息的附加消息。 ? LPARAM lParam;//用于提供消息的附加消息。 ? DWORD time;//指定消息送至队列的时间 ? POINT pt; //指定消息发送时屏幕光标的位置 ? }MSG;
否 Windows默认处理
15
2.2 入口函数WinMain()
? WinMain()函数类似C语言中的Main函数,是 Win32应用程序入口函数。
? WinMain()函数主要完成创建主窗口,并产生 和处理消息循环。
16
WinMain()函数
? 因为windows是多任务系统,所以同一应用程序的多个 窗口可能会同时存在。
? 事件驱动编程方法对于编写交互式程序很有用 处,它避免了死板的操作模式。
7
1.4 句柄
? 句柄,顾名思义,指的是一个windows对象 的把柄。
? Windows中的句柄都是32位的指针变量,用 来指向某个windows对象所占据的内存区。
? 句柄的使用,极大地方便了Windows管理其 内存中的各种windows对象。
10
VC++中存在几种系统定义的消息分类,不同的 前缀符号经常用于识别消息的分类,如下表所示:
前缀
消息分类
WM 表示窗口消息 BM 表示按钮控制消息
CB
表示组合框控制消息
DM 表示默认下压式按钮控制消息
EM 表示编辑控制消息
LB
表示列表框控制消息
SBM 表示滚动条控制消息
11
1.6 Windows 应用程序的常用消息
8
常用句柄类型及其说明
句柄 HWND HBITMAP HICON HMENU HFILE HINSTANCE
说明
句柄
窗口句柄
HDC
位图句柄
HCURSOR
图标句柄
HFONT
菜单句柄
HPEN
文件句柄
HBRUSH
当前实例句柄 HLOCAL
HGLOBAL
全局内存对象 句柄
说明 设备环境句柄 光标句柄 字体句柄 画笔句柄 画刷句柄 局部内存对象 句柄
6
1.3 事件驱动
? Windows程序设计是针对事件或消息的,它 的执行顺序取决于事件发生的顺序。
? 在Windows环境下,应用程序启动后,系统 等待用户在图形用户界面内的输入选择,如鼠 标按键、键盘按键、窗口被创建、关闭、改变 大小、移动等,对系统来说,这都是事件,都 会产生相应的windows消息。
? 但Windows API编程方法始终是windows编 程的基础。
5
1.2 窗口
? 编写一个Windows应用程序首先应创建一个 或多个窗口,而后应用程序的运行过程即是窗 口内部、窗口与窗口之间、窗口与系统之间进 行数据处理与数据交换的过程。
? 1.鼠标消息,主要有: ? WM_LBUTTONDOWN:产生单击鼠标左键的消息。 ? WM_LBUTTONUP:放开鼠标左键时产生的消息。 ? ……
? 2.键盘消息,主要有: ? WM_KEYDOWN:按下一个系统键时产生的消息。 ? WM_KEYUP:放开一个系统键时产生的消息。 ? ……
? 3.窗口消息,主要有: ? WM_CREATE:窗口创建时,由CreateWindows函数 发出的消息。 ? WM_CLOSE:关闭窗口时产生的消息。 ? WM_QUIT:退出应用程序时,由PostQuitMessage函 数发出消息。
? windows系统对每个窗口的执行称为一个实例,用一个 实例句柄来唯一标识。
? WinMain()函数与DOS程序的main()函数起同样的作用, 有一点不同的是,WinMain()函数必须带有四个参数,它 们是系统传递给它的。
3
1.1 Windows API编程基础
? Windows编程的方法主要有两种方法:
? 传统编写法:利用 API函数。 ? 交互式方法:利用 MFC类库。
? 为使程序员编写具有Windows风格的应用程序, Windows提供了一个应用程序编程接口(Application Programming Interface,简称API),它是Windows 系统与Windows应用程序间的标准程序接口。
? 上千个API函数包含了各种窗口类和系统资源。
? API可以为应用程序提供windows系统特殊函数及数 据结构。
? windows应用程序可以利用大量API函数调用系统功
能。
4
MFC
? MFC, Microsoft Foundation Class Library, 微软基础类库,约有200个类。
? ……
12
2.Windows应用程序的组成与编程
? 2.1 典型的Windows程序结构 ? 2.2 入口函数WinMain() ? 2.3 窗口函数WinProc() ? 2.4 windows应用程序的常用数据类型 ? 2.5 API编程实例
13
2.1 典型的Windows程序结构
? Windows应用程序的主体由以下两个函数完成:
VC++ win32 API 游戏开发
1
VC++ win32 API 游戏开发
? 1.Windows 编程 ? 2.Windows应用程序的组成与编程 ? 3. 游戏实现原理与Window GDI绘图 ? 4.游戏实例的剖析
2
1.Windows编程
? 1.1 Windows API编程基础 ? 1.2 窗口 ? 1.3 事件驱动 ? 1.4 句柄 ? 1.5 消息 ? 1.6 Windows应用程序的常用消息
? WinMain()函数负责建立窗口和建立消息循环。 ? WinProc()函数负责消息的处理。
14
2.1 典型的Windows程序结构
程序否有消息?
是
WinMain()函数负责
WinProc()函数负责
否 退出消息?
是 程序结束,关闭窗口
应用程序 处理消息?
是 处理消息
9
1.5 消息
? 消息是描述事件发生的信息。 ? Windows应用程序通过消息进行信息交换。 ? 在Windows中,消息用结构体MSG表示,其结构如下: ? Typedef struct tagMSG ? { HWND hwnd; //窗口句柄 ? UNIT message; //消息号。 ? WPARAM wParam;//用于提供消息的附加消息。 ? LPARAM lParam;//用于提供消息的附加消息。 ? DWORD time;//指定消息送至队列的时间 ? POINT pt; //指定消息发送时屏幕光标的位置 ? }MSG;
否 Windows默认处理
15
2.2 入口函数WinMain()
? WinMain()函数类似C语言中的Main函数,是 Win32应用程序入口函数。
? WinMain()函数主要完成创建主窗口,并产生 和处理消息循环。
16
WinMain()函数
? 因为windows是多任务系统,所以同一应用程序的多个 窗口可能会同时存在。
? 事件驱动编程方法对于编写交互式程序很有用 处,它避免了死板的操作模式。
7
1.4 句柄
? 句柄,顾名思义,指的是一个windows对象 的把柄。
? Windows中的句柄都是32位的指针变量,用 来指向某个windows对象所占据的内存区。
? 句柄的使用,极大地方便了Windows管理其 内存中的各种windows对象。
10
VC++中存在几种系统定义的消息分类,不同的 前缀符号经常用于识别消息的分类,如下表所示:
前缀
消息分类
WM 表示窗口消息 BM 表示按钮控制消息
CB
表示组合框控制消息
DM 表示默认下压式按钮控制消息
EM 表示编辑控制消息
LB
表示列表框控制消息
SBM 表示滚动条控制消息
11
1.6 Windows 应用程序的常用消息
8
常用句柄类型及其说明
句柄 HWND HBITMAP HICON HMENU HFILE HINSTANCE
说明
句柄
窗口句柄
HDC
位图句柄
HCURSOR
图标句柄
HFONT
菜单句柄
HPEN
文件句柄
HBRUSH
当前实例句柄 HLOCAL
HGLOBAL
全局内存对象 句柄
说明 设备环境句柄 光标句柄 字体句柄 画笔句柄 画刷句柄 局部内存对象 句柄
6
1.3 事件驱动
? Windows程序设计是针对事件或消息的,它 的执行顺序取决于事件发生的顺序。
? 在Windows环境下,应用程序启动后,系统 等待用户在图形用户界面内的输入选择,如鼠 标按键、键盘按键、窗口被创建、关闭、改变 大小、移动等,对系统来说,这都是事件,都 会产生相应的windows消息。