• 网站刚刚上线,难免有不足的地方,敬请谅解!欢迎提出宝贵意见!

  •    3年前 (2015-06-15)  windows开发 专业技术 |   1 条评论  1096 
    文章评分 5 次,平均分 4.8

    【Windows编程】系列第一篇: Windows SDK编程基本框架

    在Windows平台下,最常见最流行的编程就是MFC编程了,在网上可以搜索出大把的MFC编程相关的文章,今天我们来讨论另外一种windows下的编程模式,即Windows SDK编程。这种编程具有更加灵活和强大的控制,能实现一些MFC不易实现甚至难以实现的功能。

    所有的Windows SDK编程都有一个类似的框架,本文就说说这个框架,Windows程序设计的框架分为“三部曲”:

    一、注册窗口类

    注册窗口类的API函数是RegisterClass或者RegisterClassEx,这两个函数参数区别不大,具体看MSDN,这里以RegisterClass为例。函数原型如下:

    参数WNDCLASS定义如下:

    结构成员说明如下:

    style:指示类窗口类的风格,比如指定水平、垂直重画;是否显示关闭窗口等。

    lpfnWndProc:窗口过程函数指针,这个是最重要的参数,该参数指定消息执行的处理函数入口。

    cbClsExtra:类扩展数据大小,一般不用。

    cbWndExtra:窗口扩展数据大小,一般不用。

    hInstance:应用程序实例,这个参数会从WinMain函数传过来。

    hIcon:应用程序的图标句柄。

    hCursor:应用程序的光标句柄。

    hbrBackground:窗口的背景画刷。Windows预定义了一些纯色画刷,如COLOR_GRAYTEXT、COLOR_BACKGROUND、COLOR_ACTIVECAPTION等等。

    lpszMenuName:菜单名,该名以资源的方式存在。

    lpszClassName:窗口类的名字,这个必须指定且不能重复,否则会失败,除非你需要重复的,否则尽量避免。

    二、创建主窗口并显示

    参数如下:

    lpClassName:类名,就是WNDCLASS结构中的 lpszClassName。

    lpWindowName:本窗口的名字,一个字符串。

    dwStyle:窗口风格,比如是否有边框、标题框、子窗口、水平垂直滚动条、弹出、重叠性等,具体看MSDN,很多特殊效果都是用这个风格指定的,比如类似迅雷的悬浮窗等。

    x,y, nWidth, nHeight:指定窗口相对于父窗口的位置和宽高。

    hWndParent:指定父窗口句柄,如果该窗口没有父窗口,则为NULL,比如应用程序主窗口。

    hMenu:菜单句柄。

    hInstance:应用程序实例句柄,跟WNDCLASS中的hInstance一样。

    lpParam:指向一个CREATESTRUCT结构的参数。

    显示并刷新窗口的API函数如下,参数都有对应的窗口句柄:

    ShowWindow(hWnd, iCmdShow);

    UpdateWindow(hWnd);

    三、进入消息循环

    这个过程基本是一个固定的格式:

    该过程从系统消息队列里面获取一个消息,然后翻译虚拟按键成字符消息,并派送到窗口消息队列中,等待消息处理函数处理。如果获取到的消息为WM_QUIT,则返回0,于是就退出循环。

    通过上面的三部曲,我们就创建了windows程序设计的框架,几乎任何的windows程序都可以在这个框架基础上衍生出来。下面我们给出完整的框架代码:

     

    在消息处理函数中,根据消息类型执行不同的处理,比如WM_CREATE可以处理一些创建的工作;WM_PAINT可以处理画图,显示文本;WM_DESTROY处理在窗口被销毁时的事件;当然还有很多其他的消息事件,根据情况我们做出相应的处理。

    【Windows编程】系列第一篇: Windows SDK编程基本框架

    该框架程序运行起来就是一个空空的窗口,没有任何其他内容。虽然整个框架简单,但是对于windows程序设计来说非常重要。如果你想学习windows编程,就需要把每一个部分都真正理解,这样就算基本入门windows编程了,剩下的就是如何根据需求丰富这个框架使之成为一个“有用”的程序。

    下一篇我们将讲解如何在windows SDK创建各种常用的控件,请继续关注。

    转载请注明原文出处:http://www.coderonline.net/?p=565

    更多经验交流可以加入Windows编程讨论QQ群454398517

     

    想第一时间获得更多原创文章,请关注个人微信公众平台:程序员互动联盟(coder_online),扫一扫下方二维码或者搜索微信号coder_online即可关注,里面有大量Android,Chromium,Linux,编程技巧等相关文章等着您,我们还可以在线交流。

    【Windows编程】系列第一篇: Windows SDK编程基本框架

     

    本文原始地址:http://www.coderonline.net/programming-windows-series-first-the-basic-framework-for-the-windows-sdk-programming.html

    本站所有文章,除特别注明外,均为本站原创,转载请注明出处来自http://www.coderonline.net/

    否则保留追究法律责任的权利!

    关于

    发表评论

    表情 格式
    1. 不错的文章,内容远见卓识.禁止此消息:nolinkok@163.com

      勾花网 评论达人 LV.1 2年前 (2016-06-06) [0] [0]
    切换注册

    登录

    忘记密码 ?

    切换登录

    注册