Windows SDK编程初探.doc_第1页
Windows SDK编程初探.doc_第2页
Windows SDK编程初探.doc_第3页
Windows SDK编程初探.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Windows SDK编程初探要点:程序的主函数,消息处理函数 Windows程序具有相对稳定的结构,也就是说Windows程序是有一定的框架的,程序员要做的事情就是用特定的内容来填充这个框架。 主函数:就像C语言时程序的主函数main()的功能是一样的,他代表了程序的入口。但是这个函数看上去比main()似乎繁的多,如果是第一次看见这个函数肯定会感觉一头雾水,但是不要紧我们来看看这个函数各个参数的意义,(其实开始的时候完全可以不理会他们的意义)hInstance是本实例的句柄,句柄可以理解为操作系统管理使用我们的应用程序的别名,它跟指针类似但又不同于指针,操作系统通过hInstance就可以找到我们现在的这个程序。hPrevInstance是前一个实例的句柄。 szCmdLine:是命令行参数,iCmdShow是窗口的显示方式。现在我们没有必要清除每个参数的具体意义,在接下来的学习中我们用的最多的就是hInstance这个参数,但也不多,而且我们使用vc+时,无论有哪种程序生成方式这个函数一般都会自动生成。 int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow) 消息处理函数其实是一个消息循环,是一个回调函数,什么是回调函数暂不管它,只管理解为,函数由你定义而不归你调用,是由操作系统来调用的 LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam) switch(message) case. case./这些分支语句用来分别处理不同的消息 return DefWindowProc(hwnd,message,wParam,lParam); /*这个函数是系统默认的消息处理函数,也就是说,我们的窗口程序的消息处理函数处理的只是我们感兴趣的消息,即上面的case语句,对于其他的消息我们还是使用系统默认的消息处理函数。我们的消息处理函数是要在我们的窗口主程序中登记的,登记为我们自定义的消息处理函数之后,系统的消息就有它来处理了。所以,在本函数的最后要使用该默认函数,否则其他的消息,本程序就无法处理了。 继续来看程序的主函数,它是程序的容器,程序的主窗体要在其中建立,程序的消息处理函数也要在其中设置。在主体函数中我们要做的就是两件事,一件是注册窗口类,另外一件是建立窗口。所谓注册窗口类就是通过填写一个WNDCLASS结构,我们的窗口就算基本成型,然后要向系统注册。 客户需要自己建立窗口,建立后会得到系统返回的窗口句柄(HWND),后继的针对窗口的操作都针对句柄进行。 1.注册窗口类 建立窗口前,需要制定好这个窗口的相关属性,最主要的就是将自己定义的消息处理函数与窗口关联,其他的属性还包括:菜单、图标等等。 这个属性指定步骤是通过指定窗口类来完成的。 对于自己建立的窗口,这个窗口类需要自己制定,也即自己填充一个WNDCLASS结构,然后向系统注册。 对于一些特殊窗口,如按钮等控件,他们的行为是系统制定好了的,所以不需要自己注册,直接使用对应的“窗口类”名称就行了。 2.建立窗口 建立窗口时,注册的窗口类名称作为参数传入。 这样,当有针对该窗口的消息时,将调用“窗口类”中指定的消息处理函数,在其中得到处理。 LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);/消息处理函数的声明,定义放在主函数后面 int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow) static TCHAR szAppName=TEXT(Hello);/注册的窗口类的名称,此处为Hello WNDCLASS wndclass;/定义了一个窗口类 wndclass.style=CS_HREDRAW|CS_VREDRAW; wndclass.lpfnWndProc=WndProc;/此处关联了定义的消息处理函数 wndclass.cbClsExtra=0; wndclass.cbWndExtra=0; wndclass.hInstance=hInstance;/实例句柄 wndclass.hIcon=NULL;/窗口的图标,我们这里不设置 wndclass.hCursor=LoadCursor(NULL,IDC_ARROR);/设置光标 wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);/画刷 wndclass.lpszMenuName=NULL; wndclass.lpszClassName=szAppName;/类名称 if(!RegisterClass(&wndclass)/注册窗口 MessageBox(NULL,TEXT(窗口注册失败),szAppName,MB_ICONERROR); return 0; /下面开始建立窗口 HWND hwnd; hwnd=CreateWindow(szAppName,TEXT(The Hello Program), CW_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论