ImageVerifierCode 换一换
格式:PPTX , 页数:25 ,大小:535.26KB ,
资源ID:1118245      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-1118245.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第二个windows程序---空白窗口.pptx)为本站会员(天天快乐)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

第二个windows程序---空白窗口.pptx

1、临沂大学信息学院 丁林花,1,第二个windows程序 空白窗口,目标:掌握windows API创建窗口程序的步骤主程序1. 创建窗口1.1 定义窗口类对象1.2 注册窗口类1.3 创建窗口实例1.4 显示1.5 更新窗口2. 处理消息(消息循环)窗口函数(消息处理函数),临沂大学信息学院 丁林花,2,第二个windows程序 空白窗口,主程序课外阅读匈牙利命名法函数调用约定国际化编程Unicode编码Ascll编码,int WINAPI WinMain( HINSTANCE hlnstance, HINSTANCE hPrelnstance, LPSTR lpCmdLine, int nC

2、mdShow),临沂大学信息学院 丁林花,3,创建窗口第一步,定义窗口类,typedef struct tagWNDCLASSA UINT style; WNDPROC lpfnWndProc; int cbClsExtra; int cbWndExtra; HINSTANCE hInstance; HICON hIcon; HCURSOR hCursor; HBRUSH hbrBackground; LPCSTR lpszMenuName; LPCSTR lpszClassName; WNDCLASSA, *PWNDCLASSA, NEAR *NPWNDCLASSA, FAR *LPWNDC

3、LASSA;typedef struct tagWNDCLASSW UINT style; WNDPROC lpfnWndProc; int cbClsExtra; int cbWndExtra; HINSTANCE hInstance; HICON hIcon; HCURSOR hCursor; HBRUSH hbrBackground; LPCWSTR lpszMenuName; LPCWSTR lpszClassName; WNDCLASSW, *PWNDCLASSW, NEAR *NPWNDCLASSW, FAR *LPWNDCLASSW;#ifdef UNICODEtypedef W

4、NDCLASSW WNDCLASS;typedef PWNDCLASSW PWNDCLASS;typedef NPWNDCLASSW NPWNDCLASS;typedef LPWNDCLASSW LPWNDCLASS;#elsetypedef WNDCLASSA WNDCLASS;typedef PWNDCLASSA PWNDCLASS;typedef NPWNDCLASSA NPWNDCLASS;typedef LPWNDCLASSA LPWNDCLASS;#endif / UNICODE,#include ,临沂大学信息学院 丁林花,4,创建窗口第二步,注册窗口类 RegisterClas

5、s,ATOMRegisterClass(CONST WNDCLASS*lpWndClass );,临沂大学信息学院 丁林花,5,创建窗口第三步,创建窗口实例 CreateWindow,HWND CreateWindow ( LPCTSTR lpszClassName, /窗口类名LPCTSTR lpszTitle, /窗口标题名DWORD dwStyle, /创建窗口的样式int x,y, /窗口左上角坐标int nWidth,nHeight, /窗口宽度和度高HWND hwndParent, /该窗口的父窗口句柄HWENU hMenu, /窗口主菜单句柄HINSTANCE hInstance

6、, /创建窗口的应用程序当前句柄LPVOID lpParam /指向一个传递给窗口的参数值的指针 ),临沂大学信息学院 丁林花,6,窗口样式,临沂大学信息学院 丁林花,7,创建窗口 第四步,显示窗口 ShowWindow,BOOLShowWindow(HWNDhWnd, intnCmdShow );,临沂大学信息学院 丁林花,8,创建窗口 第五步,刷新窗口 UpdateWindow,BOOL UpdateWindow( HWND hWnd );,显示窗口后,应用程序调用UpdateWindow更新并绘制用户区,并发出WM_PAINT消息。 UpdateWindow(hwnd);,临沂大学信息学

7、院 丁林花,9,建立消息循环,Windows应用程序的运行以消息为核心,应用程序必须读取应用程序消息队列,检索消息并将它们发送出去,以便适当的窗口函数能够处理它们,完成这一任务的便是消息循环。,临沂大学信息学院 丁林花,10,建立消息循环,从消息队列中获取消息GetMessage翻译消息和派遣消息TranslateMessageDispatchMessage,临沂大学信息学院 丁林花,11,GetMessage,从消息队列中读取一条消息,并将消息放在MSG结构中,其中函数GetMessage形式为:GetMessage( lpMSG, /指向MSG结构的指针 hwnd, nMsgFilteMi

8、n, /用于消息过滤的最小消息号值 nMsgFilterMax /用于消息过滤的最大消息号值 ),返回零值,即检索到WM_QUIT消息,程序结束循环并退出,临沂大学信息学院 丁林花,12,消息响应,操作系统能够感知输入设备的变化(事件),并且能够知道具体的事件情况,但操作系统并不决定对这一事件如何作出反应,而是将这一事件转交给应用程序,由应用程序决定如何对这一事件作出反应。对事件作出反应的过程就是消息响应。,临沂大学信息学院 丁林花,13,消息,操作系统是怎样将感知到的事件传递给应用程序的呢?这是通过消息机制(Message)来实现的。操作系统将每个事件都包装成一个称为消息的结构体MSG来传递

9、给应用程序。,临沂大学信息学院 丁林花,14,消息结构体,MSG结构定义如下:,typedef struct tagMSG HWNDhwnd; /窗口句柄 UINTmessage; /主消息 WPARAMwParam; /附加消息 LPARAMlParam; DWORDtime; /送至队列的时间 POINTpt; /消息发送时屏幕光标的位置 MSG, *PMSG;,临沂大学信息学院 丁林花,15,Windows对象,Windows窗口是Windows系统的一个内部数据结构的实例,由一个“窗口句柄”标识,Windows系统创建它并给它分配系统资源。Windows Object是Windows系

10、统的内部结构,是Windows的规范部件,包括各种窗口、菜单、按钮、对话框以及程序模块等,通过一个句柄来引用。,临沂大学信息学院 丁林花,16,句柄(Handle),句柄(HANDLE),Windows用来标识被应用程序建立或使用的Windows对象的一个唯一的整数值。操作系统要管理和操作这些Windows对象(资源),都是通过句柄来找到对应的对象。按Windows对象的类型,又可将句柄细分成图标句柄(HICON),光标句柄(HCURSOR),窗口句柄(HWND),应用程序实例句柄(HINSTANCE)等等各种类型的句柄。操作系统给每一个窗口指定的一个唯一的标识号(整数值)即窗口句柄。,- 1

11、7 -,Windows编程基础句柄,临沂大学信息学院 丁林花,18,主消息,由事先定义好的消息名标识采用不同的前缀符号来区别能够解释和处理消息的窗口类型WM_ 窗口消息BM_ 按钮控制消息CB_ 组合框控制消息DM_ 默认下压式按钮控制消息EM_ 编辑控制消息LB_ 列表框控制消息SMB_ 滚动条控制消息,临沂大学信息学院 丁林花,19,附加消息,与主消息有关wParamlParam,临沂大学信息学院 丁林花,20,窗口过程,窗口过程函数用来对消息进行处理,LRESULT CALLBACKWndProc (HWNDhWnd,UINT message,WPARAM wParam,LPARAM l

12、Param );,临沂大学信息学院 丁林花,21,窗口函数的一般形式如下:LRESULT CALLBACK WndProc(HWND hwnd,UINT messgae, WPARAM wParam,LPARAM lParam ) switch(message) message为标识的消息 case break; case WM_DESTROY: PostQuitMessage(0); default: return DefWindowProc(hwnd,message,wParam,lParam); return(0);,在消息处理程序段中一般都有对WM_DESTROY的处理,该消息是关闭窗

13、口时发出的。它向应用程序发出WM_QUIT消息,请求退出处理函数: void PostQuitMessage(int nExitCode) /nExitCode为应用程序的退出代码,为未定义处理过程的消息提供缺省处理,临沂大学信息学院 丁林花,22,程序执行流程,第二个windows程序 代码示例,临沂大学信息学院 丁林花,23,#include #include LRESULT CALLBACK WndProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam);/窗口处理函数声明int WINAPI WinMain(_in HINSTANCE

14、hInstance, _in_opt HINSTANCE hPrevInstance, _in LPSTR lpCmdLine,_in int nShowCmd )TCHAR lpszClassName = _T(MyWindow);TCHAR lpszWindowName = _T(我的第一个窗口);HWND hwnd;/1.定义窗口类对象WNDCLASS wndclass;wndclass.style = 0;wndclass.lpfnWndProc = WndProc;wndclass.cbClsExtra = 0;wndclass.cbWndExtra = 0;wndclass.hIn

15、stance = hInstance;wndclass.hIcon = NULL;wndclass.hCursor = NULL;wndclass.hbrBackground = NULL;wndclass.lpszMenuName = NULL;wndclass.lpszClassName = lpszClassName;,第二个windows程序 代码示例续,临沂大学信息学院 丁林花,24,/2.注册窗口if(!RegisterClass(/将消息传递到窗口函数,将紫色部分分别改成NULL试试,将消息循环注释掉试试,第二个windows程序 代码示例续,临沂大学信息学院 丁林花,25,LRESULT CALLBACK WndProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam)switch(uMsg)case WM_CLOSE:PostQuitMessage(0);break;default:return DefWindowProc(hwnd,uMsg,wParam,lParam);return 0;,将紫色部分注释掉试试,

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报