《C++》课程教学课件(讲稿)第十二章 Windows程序设计初步

第十二章 Windows程序设计初步 本章主要内容 1. Windows窗口程序的基本结构 2. Windows程序的消息驱动机制 3. Windows程序从启动到结束的过程
16:55:00 第十二章 Windows程序设计初步 本章主要内容 1. Windows窗口程序的基本结构 2. Windows程序的消息驱动机制 3. Windows程序从启动到结束的过程

例:简单的 Windows窗口程序 > Windows窗口程序的结构 WinMain0函数: Window:程序的入口点 函数原型为: int APIENtRY WinMain (HINSTANCe hInst HINSTANCE hPrevInst LPSTR lpCmdLine int sHow Cmd) WndProc函数:窗口函数 函数原型为: LRESULT CALLBACK函数名( HWND hWin, UINT uMsg WPARAM wPrm LPARAM 1Prm)
16:55:00 例:简单的Windows窗口程序 .WinMain()函数:Windows程序的入口点 函数原型为: int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nShowCmd); .WndProc函数:窗口函数 函数原型为: LRESULT CALLBACK 函数名(HWND hWin, UINT uMsg, WPARAM wPrm, LPARAM lPrm); ➢Windows窗口程序的结构

例:另一个 Windows窗口应用程序 Window程序中的窗口由程序员创建,创建窗口之前必须向系统说 明窗口的属性与该窗口能表现出的行为—向系统注册窗口类 数据结构: WNDCLASS 说明窗口的属性与行为,以供注册窗口类时使用 typedef struct -WNDCLASS UINT style, WNDPRoC lpfnWndProc int cbClsextra: int cbWndExtra: HINSTANCE hInstance hicon hicon: CURSOr cUrsor, HBRUSH hbrBackground; LPCtSTR lpszMenuName LPCTSTR lpszClassName WNDCLASS, *PWNDCLASS
16:55:00 例:另一个Windows窗口应用程序 .Window程序中的窗口由程序员创建,创建窗口之前必须向系统说 明窗口的属性与该窗口能表现出的行为 -- 向系统注册窗口类 .数据结构:WNDCLASS 说明窗口的属性与行为,以供注册窗口类时使用 typedef struct _WNDCLASS{ UINT style; WNDPROC lpfnWndProc; int cbClsExtra; int cbWndExtra; HINSTANCE hInstance; HICON hIcon; HCURSOR hCursor; HBRUSH hbrBackground; LPCTSTR lpszMenuName; LPCTSTR lpszClassName; }WNDCLASS, *PWNDCLASS;

6:55A00 Windows中的消息 Windows程序是事件驱动的,发生一个事件时,系统以消息 的形式通知给应用程序,应用程序再来处理(如何处理该事 件由程序员编写的代码指明) 消息是一种数据结构,由如下结构体定义: typedef struct tagMSG HWND hwnd UINT message) WPARAM wParam: LPARAM IParam; DWORD time: POINT pt MSG,*PMSG;
16:55:00 Windows中的消息 Windows程序是事件驱动的,发生一个事件时,系统以消息 的形式通知给应用程序,应用程序再来处理(如何处理该事 件由程序员编写的代码指明) 消息是一种数据结构,由如下结构体定义: typedef struct tagMSG{ HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD time; POINT pt; }MSG, *PMSG;

6:55:00 消息队列与消息循环 消息队列 Windows中的窗口程序都有一个消息队列,在该窗口上发生 某些事件时,消息进入该窗口的消息队列排队,等待程序 处理 消息循环 WinMaino函数中后面的 while循环就是消息循环 MSG ms gMes sage, while(GetMessage(&msgMes sage, NULL, 0, 0) Trans lateMessage(&ms gMes sage) DispatchEs sage( &ms gMes sage) 其作用就是不断从消息队列中取出消息,经过解释,分发给 窗口函数 WndProc0去处理,直到从消息队列中取出的消息的 标识为W_QUIT,消息循环结束,整个应用程序随之结束
16:55:00 消息队列与消息循环 .消息队列 Windows中的窗口程序都有一个消息队列,在该窗口上发生 某些事件时,消息进入该窗口的消息队列排队,等待程序 处理 .消息循环 WinMain()函数中后面的while循环就是消息循环 MSG msgMessage; while(GetMessage(&msgMessage,NULL,0,0)){ TranslateMessage(&msgMessage); DispatchMessage(&msgMessage); } 其作用就是不断从消息队列中取出消息,经过解释,分发给 窗口函数WndProc()去处理,直到从消息队列中取出的消息的 标识为WM_QUIT,消息循环结束,整个应用程序随之结束

6:55A00 > Windows程序从启动到结束的过程 1.进入 WinMain0函数→调用 Registerclas0函数注册窗 类→调用 CreateWindow0函数创建窗口 CreateWindow0创建了窗口之后,直接给窗口函数送出标 识为 WM_ CREATE的消息,在此消息的处理程序段中进行初 始化工作 2.显示并刷新窗口 3.进入消息循环,不断从消息队列中取出消息,若该消息是 WM-QUIT,则 GetMessage0函数返回0,结束消息循环,进而 结束程序 4. TranslateMessage0对键盘消息进行翻译, 数中被处聖a8e0把消息分发给窗口函数,消息在窗口函 DispatchEr 5.程序不断重复3和4的操作
16:55:00 ➢Windows程序从启动到结束的过程 1.进入WinMain()函数→调用RegisterClass()函数注册窗 口 类 → 调 用 CreateWindow() 函 数 创 建 窗 口 。 CreateWindow()创建了窗口之后,直接给窗口函数送出标 识为WM_CREATE的消息,在此消息的处理程序段中进行初 始化工作 2.显示并刷新窗口 3.进入消息循环,不断从消息队列中取出消息,若该消息是 WM_QUIT,则GetMessage()函数返回0,结束消息循环,进而 结束程序 4.TranslateMessage() 对 键 盘 消 息 进 行 翻 译 , DispatchMessage()把消息分发给窗口函数,消息在窗口函 数中被处理 5.程序不断重复3和4的操作

16;55:00 > Windows程序从启动到结束的过程(续) 6.用户单击关闭按钮或键盘很按下A1t+F4时,系统向该窗口 发送M_CL0SB消息,通常程序中不处理它,于是 DefWindowProc0处理它 7. DefwindowProc0收到WCL0SE后,调用 DestroyWindow0 把窗口销毁, Des troyWindow0又发送W_ DESTR0Y消息 8.程序对WM- DESTR0Y消息一般进行的操作是调用 Pos tQuitMessage0函数 9. PostQui mEssage0函数把WM_QUIT消息放入消息队列, 该消息由消息循环中的 GetMessage0函数取得,如步骤3, 结束消息循环,从而结束整个程序
16:55:00 ➢Windows程序从启动到结束的过程(续) 6.用户单击关闭按钮或键盘很按下Alt+F4时,系统向该窗口 发 送 WM_CLOSE 消 息 , 通 常 程 序 中 不 处 理 它 , 于 是 DefWindowProc()处理它 7.DefWindowProc()收到WM_CLOSE后,调用DestroyWindow() 把窗口销毁,DestroyWindow()又发送WM_DESTROY消息 8. 程序对 WM_DESTROY 消 息 一 般 进 行 的 操 作 是 调 用 PostQuitMessage()函数 9.PostQuitMessage()函数把WM_QUIT消息放入消息队列, 该消息由消息循环中的GetMessage()函数取得,如步骤3, 结束消息循环,从而结束整个程序
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《C++》课程教学课件(讲稿)第十一章 输入/输出流.ppt
- 《C++》课程教学课件(讲稿)第十章 异常处理.ppt
- 《C++》课程教学课件(讲稿)第一章 面向对象程序设计概述.ppt
- 《C++》课程教学课件(讲稿)考核题目.doc
- 《Matlab讲解》教学资料:Matlab初步(讲稿)之四.doc
- 《Matlab讲解》教学资料:Matlab初步(讲稿)之三之补充.doc
- 《Matlab讲解》教学资料:Matlab初步(讲稿)之三.doc
- 《Matlab讲解》教学资料:Matlab初步(讲稿)之二.doc
- 《Matlab讲解》教学资料:调用 Matlab 软件.doc
- 《Matlab讲解》教学资料:调用 Matlab 软件初步.doc
- 《Matlab讲解》教学资料:用Matlab作最小二乘曲线拟合.doc
- 《Matlab讲解》教学资料:用Matlab求解非线性规划.doc
- 《Matlab讲解》教学资料:用Matlab解微分方程.doc
- 《Matlab讲解》教学资料:普兰廷卡的模态形而上学.doc
- 《Matlab讲解》教学资料:Matlab初步(讲稿)之一.doc
- 河北工业大学:《离散数学》课程PPT教学课件(讲稿)第七章 图.ppt
- 河北工业大学:《离散数学》课程PPT教学课件(讲稿)第二章 谓词逻辑.ppt
- 河北工业大学:《离散数学》课程PPT教学课件(讲稿)第一章 概述 Discrete Mathematics(主讲:郭永芳).ppt
- 河北工业大学:《离散数学》课程PPT教学课件(讲稿)第五章 代数系统.ppt
- 河北工业大学:《离散数学》课程PPT教学课件(讲稿)第四章 函数的概念.ppt
- 兰州大学信息学与工程学院:《Windows SDK程序设计基础》Windows程序的基本结构(程建军).pdf
- 兰州大学信息学与工程学院:《Windows SDK程序设计基础》WinMain函数:Windows程序的入口点(程建军).pdf
- 《C++》课程教学课件(讲稿)第十三章 MFC程序设计举例.ppt
- 《C++》课程教学课件(讲稿)第六章 地址家族和名字解析(1/2).pdf
- 《C++》课程教学课件(讲稿)第六章 地址家族和名字解析(2/2).pdf
- 《C++》课程教学课件(讲稿)第二章 C++语言初步.ppt
- 《C++》课程教学课件(讲稿)第三章 类与对象.ppt
- 《C++》课程教学课件(讲稿)第四章 对象的初始化与销毁:构造函数与析构函数.ppt
- 《C++》课程教学课件(讲稿)第五章 运算符重载.ppt
- 《C++》课程教学课件(讲稿)第六章 名称空间.ppt
- 《C++》课程教学课件(讲稿)第七章 组合与继承.ppt
- 《C++》课程教学课件(讲稿)第八章 多态性(polymophism).ppt
- 《C++》课程教学课件(讲稿)第九章 模板.ppt
- 《C语言教程》教学资源(讲义)第一章 C 语言教程.doc
- 《C语言教程》教学资源(讲义)第二章 程序的灵魂一算法.doc
- 《C语言教程》教学资源(讲义)第三章 数据类型、运算符与表达式.doc
- 《C语言教程》教学资源(讲义)第四章 最简单的C程序设计一顺序程序设计.doc
- 《C语言教程》教学资源(讲义)第五章 分支结构程序.doc
- 《C语言教程》教学资源(讲义)第六章 循环控制.doc
- 《C语言教程》教学资源(讲义)第七章 数组.doc