Windows SDK笔记(1~7)

Windows SDK笔记(1~7)

ID:37713817

大小:57.38 KB

页数:13页

时间:2019-05-29

Windows SDK笔记(1~7)_第1页
Windows SDK笔记(1~7)_第2页
Windows SDK笔记(1~7)_第3页
Windows SDK笔记(1~7)_第4页
Windows SDK笔记(1~7)_第5页
资源描述:

《Windows SDK笔记(1~7)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、WindowsSDK笔记(一):Windows程序基本结构一、概述Windows程序具有相对固定的结构,对编写者而言,不需要书写整个过程,大部分过程由系统完成。程序中只要按一定的格式填写系统留给客户的那一小部分。所需要完成的有:窗口类的定义、窗口的建立、消息函数的书写、消息循环。二、消息处理函数Windows程序是事件驱动的,对于一个窗口,它的大部分例行维护是由系统维护的。没个窗口都有一个消息处理函数。在消息处理函数中,对传入的消息进行处理。系统内还有它自己的缺省消息处理函数。客户写一个消息处理函数,在

2、窗口建立前,将消息处理函数与窗口关联。这样,每当有消息产生时,就会去调用这个消息处理函数。通常情况下,客户都不会处理全部的消息,而是只处理自己感兴趣的消息,其他的,则送回到系统的缺省消息处理函数中去。LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessage,WPARAMwParam,LPARAMlParam){switch(message){case......case......}returnDefWindowProc(hwnd,message,wParam,lParam

3、);}三、窗口的建立客户需要自己建立窗口,建立后会得到系统返回的窗口句柄(HWND),后继的针对窗口的操作都针对句柄进行。1.注册窗口类建立窗口前,需要制定好这个窗口的相关属性,最主要的就是将自己定义的消息处理函数与窗口关联,其他的属性还包括:菜单、图标等等。这个属性指定步骤是通过指定"窗口类"来完成的。对于自己建立的窗口,这个"窗口类"需要自己制定,也即自己填充一个WNDCLASS结构,然后向系统注册。对于一些特殊窗口,如按钮等控件,他们的行为是系统制定好了的,所以不需要自己注册,直接使用对应的“窗口

4、类”名称就行了。2.建立窗口建立窗口时,注册的"窗口类"名称作为参数传入。这样,当有针对该窗口的消息时,将调用“窗口类”中指定的消息处理函数,在其中得到处理。四、消息循环系统会将针对这个程序的消息依次放到程序的“消息队列”中,由程序自己依次取出消息,在分发到对应的窗口中去。因此,建立窗口后,将进入一个循环。在循环中,取出消息、派发消息,循环往复,直到取得的消息是退出消息。循环退出后,程序即结束。#include"stdafx.h"#include//一、消息处理函数//参数:窗口句

5、柄,消息,消息参数,消息参数LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessage,WPARAMwParam,LPARAMlParam){//处理感兴趣的消息switch(message){caseWM_DESTROY://当用户关闭窗口,窗口销毁,程序需结束,发退出消息,以退出消息循环PostQuitMessage(0);return0;}//其他消息交给由系统提供的缺省处理函数return::DefWindowProc(hwnd,message,wParam,lPar

6、am);}//二、应用程序主函数//参数:实例句柄、前一个实例的句柄、命令行参数、窗口显示方式intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,PSTRszCmdLine,intiCmdShow){//1.注册窗口类staticTCHARszAppName[]=TEXT("HelloWin");//窗口类名称WNDCLASSwndclass;//定制"窗口类"结构wndclass.style=CS_HREDRAW

7、CS_VREDRAW;

8、wndclass.lpfnWndProc=WndProc;//关联消息处理函数wndclass.cbClsExtra=0;wndclass.cbWndExtra=0;wndclass.hInstance=hInstance;//实例句柄wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);//图标wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);//光标wndclass.hbrBackground=(HBRUSH)GetStoc

9、kObject(WHITE_BRUSH);//画刷wndclass.lpszMenuName=NULL;wndclass.lpszClassName=szAppName;//类名称//注册if(!RegisterClass(&wndclass)){MessageBox(NULL,TEXT("RegisterClassFail!"),szAppName,MB_ICONERROR);return0;}//建立窗口HWNDhwnd;hwnd=Cr

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。