当前位置:高等教育资讯网  >  中国高校课件下载中心  >  大学文库  >  浏览文档

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

资源类别:文库,文档格式:PPT,文档页数:7,文件大小:186KB,团购合买
1. Windows窗口程序的基本结构 2. Windows程序的消息驱动机制 3. Windows程序从启动到结束的过程
点击下载完整版文档(PPT)

第十二章 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, 结束消息循环,从而结束整个程序

点击下载完整版文档(PPT)VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
已到末页,全文结束
相关文档

关于我们|帮助中心|下载说明|相关软件|意见反馈|联系我们

Copyright © 2008-现在 cucdc.com 高等教育资讯网 版权所有