简单windows程序解析

上传人:s9****2 文档编号:500816215 上传时间:2022-11-29 格式:DOC 页数:6 大小:26.51KB
返回 下载 相关 举报
简单windows程序解析_第1页
第1页 / 共6页
简单windows程序解析_第2页
第2页 / 共6页
简单windows程序解析_第3页
第3页 / 共6页
简单windows程序解析_第4页
第4页 / 共6页
简单windows程序解析_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《简单windows程序解析》由会员分享,可在线阅读,更多相关《简单windows程序解析(6页珍藏版)》请在金锄头文库上搜索。

1、Windows SDK编程(窗口示例程序)/*Windows SDK编程之一 窗口示例程序*/*Win32应用程序框架主要由初始化窗口类,窗口注册类,窗口的创建以窗口消息函数等组成*/#include LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); /窗口函数说明/*WinMain函数是所有windows应用程序的入口,类似于C语言中的Main函数,其功能是完成一系列的定义和初始化工作,并产生消息循环。消息循环是整个程序运行的核心。WinMain函数实现以下功能。1. 注册窗口类,建立窗口及执行其它必要的初始化工作;2. 进入消息循环,根据

2、从应用程序消息队列接受的消息,调用相应的处理过程3. 当消息循环检索到WM_QUIT消息时终止程序运行。WinMain函数有三个基本的组成部份:函数说明、初始化和消息循环。WinMain函数的说明如下:int WINAPI WinMain( /WinMain函数说明HINSTANCE hInstance, /程序当前实例句柄HINSTANCE hPrevInstance, /应用程序其它实例句柄LPSTR lpCmdLine, /指向程序命令行参数的指针int nCmdShow /应用程序开始执行时窗口显示方式的整数值标识)由于Window操作系统是多任务的操作系统,能进行多任务的管理,因此,

3、windows应用程序可能被并行的多次执行,因而可能出现同一个程序的多个窗口同时存在的情况,Windows系统将应用程序每一次执行称为该应用程序的一个实例(Instance),并用一个实例句柄唯一的标识它。*/int APIENTRY WinMain(HINSTANCE hInstance, /WinMain函数说明HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)/*建议采用Pascal的变量定义风格,即在程序(函数)开始处定义所有变量虽然C+的变量定义比较灵活,本程序为了使程序易于理解,未采用这种方法*/char lpszClassN

4、ame=窗口; /窗口类名char lpszTitle=Windows SDK编程之一 窗口示例程序; /窗口标题名/-窗口类定义-/*窗口类的定义在Windows应用程序中,窗口害定义了窗口的形式与功能。窗口类定义通过给窗口类数据结构WNDCLASS赋值完成,该数据结构中包括窗口类的各种属性,在窗口类定义过程中常用到以下函数:*/WNDCLASS wndclass;wndclass.style=0; /窗口类型为缺省类型wndclass.lpfnWndProc=WndProc; /窗口处理函数为WndProcwndclass.cbClsExtra=0; /窗口类无扩展wndclass.cbW

5、ndExtra=0; /窗口实例无扩展wndclass.hInstance=hInstance; /当前实例句柄wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION); /使用缺省图标/*LoadIcon():在应用程序中加载一个窗口图标LoadIcon()函数原型为:HICON LoadIcon(HINSTANCE hInstance, /图标资源所在的模块句柄,为NULL则使用系统预定义图标LPCTSTR lpIconName /图标资源名或系统预定义图标标识名)*/wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);

6、 /窗口采用箭头光标/*LoadCursor():在应用程序中加载一个窗口光标LoadCursor()函数原型为:HCURSOR LoadCursor(HINSTANCE hInstance, /光标资源所在的模块句柄,为NULL则使用系统预定义光标LPCTSTR lpCursorName /光标资源名或系统预定义光标标识名)*/wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); /窗口背景为白色/*GetStockObject():获取已经定义的画笔、画刷、字体等对象的句柄GetStockObject()函数原型为:HGDI

7、OBJ GetStockObject(int fnObject); /fnObject为对象的标识名*/wndclass.lpszMenuName=NULL; /窗口中无菜单wndclass.lpszClassName=lpszClassName; /窗口类名为窗口实例/-以下是进行窗口类的注册-/*注册窗口类Windows系统本身提供部份预定义的窗口类,程序员也可以自定义窗口类,窗口类必须先注册后使用。窗口类的注册由注册函数RegisterClass()实现。其形式为:RegisterClass(&wndclass)&wndclass为窗口类结构RegisterClass函数的返回值为布尔值

8、,注册成功则返回真*/if(!RegisterClass(&wndclass) /注册窗口,若失败,则发出声音 MessageBeep(0);return FALSE;/*创建窗口实例创建一个窗口类的实例由函数CreateWindow()实现,该函数的原型为:HWND CreateWindow(LPCTSTR lpszClassName, /创建窗口,窗口类名LPCTSTR lpszTitle, /窗口实例的标题名DWORD dwStyle, /窗口的风格int x, /窗口左上角坐标int y, /窗口左上角坐标int nWidth, /窗口的宽度int nHeight, /窗口的高度HWN

9、D hwndParent, /此窗口父窗口HWENU hMenu, /此窗口主菜单HINSTANCE hInstance, /应用程序当前句柄LPVOID lpParam); /指向一个传递给窗口的参数值的指针*/创建窗口操作HWND hwnd; /窗口结构hwnd=CreateWindow(lpszClassName, /创建窗口,窗口类名lpszTitle, /窗口实例的标题名WS_OVERLAPPEDWINDOW, /窗口的风格CW_USEDEFAULT,CW_USEDEFAULT, /窗口左上角坐标为缺省值CW_USEDEFAULT,CW_USEDEFAULT, /窗口的高度和宽度为缺

10、省值NULL, /此窗口无父窗口NULL, /此窗口无主菜单hInstance, /应用程序当前句柄NULL); /不使用该值ShowWindow(hwnd,nCmdShow); /显示窗口UpdateWindow(hwnd); /绘制用户区/*消息循环windows应用程序的运行以消息为核心。windows将产生的消息放入应用程序的消息队列中而应用程序WinMain函数的消息循环提取消息队列中的消息,并将其传递给窗口函数为相应处理过程处理。MSG msg; /消息结构while( GetMessage(&msg,NULL,0,0) /消息循环 TranslateMessage(&msg);D

11、ispatchMessage(&msg);*/MSG msg; /消息结构/*GetMessage()作用:从消息队列中读取一条消息,并将消息放在一个MSG结构中:BOOL GetMessage(LPMSG lpMsg, /指向MSG结构的指针HWND hWnd,UINT wMsgFilterMin, /用于消息过滤的最小信息号值UINT wMsgFilterMax /用于消息过滤的最大信息号值 如最小值和最大值均为0, 则不过滤消息);当GetMessage返回0时,即检索到WM_QUIT消息,程序将结束循环并退出BOOL TranslateMessage(const MSG *lpMsg)

12、; 负责把消息的虚拟键值转换为字符信息LRESULT DispatchMessage(const MSG *lpmsg); 将参数lpmsg指向的消息传递给指定的窗口*/while(GetMessage(&msg,NULL,0,0) /消息循环TranslateMessage(&msg);DispatchMessage(&msg);return msg.wParam; /程序终止时,将信息返回操作系统/-窗口函数-/*窗口消息处理函数定义了应用程序对接收到的不同消息的响应,它包含了应用程序对各种可用接收到的消息的处理过程,通常,窗口函数由一个或多个switch.case语句组成,每一条case

13、语句对应一种消息,当应用程序接收到一个消息时,相应的case语句被激活并执行相应的响应程序模块。窗口函数的一般形式如下:LRESULT CALLBACK WindowProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam);Parametershwnd:in Handle to the window.uMsg:in Specifies the message.wParam:in Specifies additional message information. The contents of this parameter depend on t

14、he value of the uMsg parameter.lParam:in Specifies additional message information. The contents of this parameter depend on the value of the uMsg parameter.Return ValueThe return value is the result of the message processing and depends on the message sent.LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)switch (message)case .break;.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 试题/考题 > 初中试题/考题

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号