zoukankan      html  css  js  c++  java
  • 窗口注册类结构和消息结构详解

      本文介绍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  谢谢。

     

      完毕。^_^

     

  • 相关阅读:
    vim 命令详解
    Helloworld with c
    VS扩展开发框架
    Putty是一个专业的SSH连接客户端
    你的Java代码对JIT编译友好么?(转)
    java nio的一个严重BUG(转)
    JVM可支持的最大线程数(转)
    Java下获取可用CPU数
    java观察者模式(转)
    Android开发之控制Toast的开启与关闭
  • 原文地址:https://www.cnblogs.com/hanyonglu/p/2014220.html
Copyright © 2011-2022 走看看