资源描述:
《windows_sdk编程系列文章02_----_简单窗口程序.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、windowssdk编程系列文章----简单窗口程序2008-04-0806:37理论:Windows程序中,在写图形用户界面时需要调用大量的标准WindowsGui函数。其实这对用户和程序员来说都有好处,对于用户,面对的是同一套标准的窗口,对这些窗口的操作都是一样的,所以使用不同的应用程序时无须重新学习操作。对程序员来说,这些Gui源代码都是经过了微软的严格测试,随时拿来就可以用的。当然至于具体地写程序对于程序员来说还是有难度的。为了创建基于窗口的应用程序,必须严格遵守规范。作到这一点并不难,只要用模块化或面向
2、对象的编程方法即可。下面我就列出在桌面显示一个窗口的几个步骤:1.得到您应用程序的句柄(对于C程序,可选);2.得到命令行参数(如果您想从命令行得到参数,可选);3.注册窗口类(必需,除非您使用Windows预定义的窗口类,如MessageBox或dialogbox;4.产生窗口(必需);5.在桌面显示窗口(必需,除非您不想立即显示它);6.刷新窗口客户区;7.进入无限的获取窗口消息的循环;8.如果有消息到达,由负责该窗口的窗口回调函数处理;9.如果用户关闭窗口,进行退出处理。相对于单用户的DOS下的编程来说,W
3、indows下的程序框架结构是相当复杂的。但是Windows和DOS在系统架构上是截然不同的。Windows是一个多任务的操作系统,故系统中同时有多个应用程序彼此协同运行。这就要求Windows程序员必须严格遵守编程规范,并养成良好的编程风格。例子:(见光盘FirstWindow)#include"Windows.h"#include"tchar.h"HWNDhWinMain;TCHARszClassName[]=_T("MyClass");TCHARszCaptionMain[]=_T("MyFirstWind
4、ow!");TCHARszText[]=_T("Win32program,Simpleandpowerful!");WNDCLASSEXstdWndClass;//如果有消息到达,由负责该窗口的窗口回调函数处理LRESULTCALLBACKProcWinMain(HWNDhWnd,UINTMsg,WPARAMwParam,LPARAMlParam){switch(Msg){//如果用户关闭窗口,进行退出处理caseWM_CLOSE:{DestroyWindow(hWinMain);PostQuitMessage(
5、NULL);}break;default:returnDefWindowProc(hWnd,Msg,wParam,lParam);}return0;}intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRlpCmdLine,intnCmdShow){MSGstMsg;WNDCLASSEXstdWndClass;RtlZeroMemory(&stdWndClass,sizeof(stdWndClass));stdWndClass.hCurso
6、r=LoadCursor(0,IDC_ARROW);stdWndClass.cbSize=sizeof(stdWndClass);stdWndClass.style=CS_HREDRAW
7、CS_VREDRAW;stdWndClass.lpfnWndProc=ProcWinMain;stdWndClass.hbrBackground=(HBRUSH)COLOR_WINDOW;stdWndClass.lpszClassName=szClassName;stdWndClass.hInstance=hInstance;/
8、/注册窗口RegisterClassEx(&stdWndClass);//产生窗口hWinMain=CreateWindowEx(WS_EX_CLIENTEDGE,szClassName,szCaptionMain,WS_OVERLAPPEDWINDOW,100,100,600,400,NULL,NULL,hInstance,NULL);if(!hWinMain)return0;//在桌面显示窗口ShowWindow(hWinMain,SW_SHOWNORMAL);//刷新窗口客户区UpdateWindow(h
9、WinMain);//进入无限的获取窗口消息的循环while(GetMessage(&stMsg,NULL,0,0)){TranslateMessage(&stMsg);DispatchMessage(&stMsg);}returnstMsg.wParam;}分析:看到一个简单的Windows程序有这么多行,您是不是有点想撤?但是您必须要知道的是上面的大多数代码都是模板而