• 窗口注册类结构和消息结构详解


      本文介绍Windows API中的窗口注册类和消息结构的相关知识。

      WNDCLASSEX窗口注册类:

      结构体原型:

    typedef struct WNDCLASSEX {
    
        UINT cbSize;
    
        UINT style;
    
        WNDPROC lpfnWndProc;
    
        int cbClsExtra;
    
        int cbWndExtra;
    
        HINSTANCE hInstance;
    
        HICON hIcon;
    
        HCURSOR hCursor;
    
        HBRUSH hbrBackground;
    
        LPCTSTR lpszMenuName;
    
        LPCTSTR lpszClassName;
    
        HICON hIconSm;
    
      } WNDCLASSEX, *PWNDCLASSEX;

      参数详解:

    cbSize:

      WNDCLASSEX 的大小。我们可以用sizeof(WNDCLASSEX)来获得准确的值。 

    style:

      从这个窗口类派生的窗口具有的风格。您可以用“or”操作符来把几个风格或到一起。

    lpfnWndProc:

      窗口处理函数的指针。  

    cbClsExtra:

      指定紧跟在窗口类结构后的附加字节数。  

    cbWndExtra:

      指定紧跟在窗口事例后的附加字节数。如果一个应用程序在资源中用CLASS伪指令注册一个对话框类时,则必须把这个成员设成DLGWINDOWEXTRA。

    hInstance:

      本模块的事例句柄。

    hIcon:

      图标的句柄。

    hCursor:

      光标的句柄。

    hbrBackground:

      背景画刷的句柄。

    lpszMenuName:

      指向菜单的指针。

    lpszClassName:

      指向类名称的指针。

    hIconSm:

      和窗口类关联的小图标。如果该值为NULL。则把hCursor中的图标转换成大小合适的小图标。

      WNDCLASSEX 中最重要的成员莫过于lpfnWndProc了。前缀 lpfn 表示该成员是一个指向函数的长指针。在 Win32中由于内存模式是 FLAT 型,所以没有 near 或 far 的区别。每一个窗口类必须有一个窗口过程,当 Windows 把属于特定窗口的消息发送给该窗口时,该窗口的窗口类负责处理所有的消息,如键盘消息或鼠标消息。由于窗口过程差不多智能地处理了所有的窗口消息循环,所 以您只要在其中加入消息处理过程即可。

      MSG消息结构如下:

    typedef struct tagMSG { 
        HWND hwnd; 
        UINT message; 
        WPARAM wParam; 
        LPARAM lParam; 
        DWORD time; 
        POINT pt; 
      } MSG, *PMSG;

      

      参数详解:

    hwnd:

      所要发送消息到窗口的句柄。

    message:

      指定的消息标识符。应用程序只能用低字节,系统用高字节。

    wParam:

      相关参数的附加信息。

    lParam:

      相关参数的附加信息。

    time:

      标识发送消息的时间。

    pt:

      当发送消息时标识鼠标的光标位置。

      WM_CREATE消息响应函数和WM_INITDIALOG消息响应函数之区别:

      在响应WM_CREATE消息响应函数的时候,对话框及子控件还未创建完成,亦是说只是通知系统说要开始创建窗口啦,这个消息响应完之后,对话框和子控件才开始创建。因此在此消息响应函数中无法对控件进行修改和初始化。

      而WM_INITDIALOG消息响应函数是在程序运行时,当其对话框和子控件全部创建完毕,将要显示内容的时候发送的消息。因此可以在WM_INITDIALOG消息响应函数中添加对编辑框控件的初始化和修改。

     

      最后,希望转载的朋友能够尊重作者的劳动成果,加上转载地址:http://www.cnblogs.com/hanyonglu/archive/2011/04/12/2014220.html  谢谢。

     

      完毕。^_^

     

  • 相关阅读:
    CSS3动画(性能篇)
    格拉西安《智慧书》中最有价值的23条法则
    HTML5系列四(特征检测、Modernizr.js的相关介绍)
    CSS3系列四(Media Queries移动设备样式)
    高性能JavaScript笔记三(编程实践)
    高性能JavaScript笔记二(算法和流程控制、快速响应用户界面、Ajax)
    LABjs(类似于LazyLoad,但它更加方便管理依赖关系)
    高性能JavaScript笔记一(加载和执行、数据访问、DOM编程)
    《代码大全》阅读笔记-34-软件工艺的话题
    《代码大全》阅读笔记-33-个人性格(personal character)
  • 原文地址:https://www.cnblogs.com/hanyonglu/p/2014220.html
Copyright © 2020-2023  润新知