zoukankan      html  css  js  c++  java
  • Win32 程序开发:窗口类结构体 WNDCLASS 和 WNDCLASSEX

    一、窗口类结构体简介

    窗口类结构体包含了窗口的各种参数信息。比如:窗口的图标、菜单栏、背景颜色、窗口的消息处理等等。

    窗口类结构体有两个:WNDCLASS(早期版本) 和 WNDCLASSEX(新版本)。至于为什么有 WNDCLASSEX 还要保留老版本的 WNDCLASS?主要是为了兼容以前使用老版本开发的 Win32 程序才保留的。


    二、窗口类结构体的成员变量

    这里暂时只介绍新版本的 WNDCLASSEX,也更推荐使用新版本的。

    typedef struct tagWNDCLASSEXW  {
        UINT        cbSize;                // 窗口类结构体的内存大小(new)    
        UINT        style;                 // 类风格
        WNDPROC     lpfnWndProc;           // 窗口的处理过程
        int         cbClsExtra;            // 指定紧随在 WNDCLASS 数据结构后分配的字节数
        int         cbWndExtra;            // 指定紧随在窗口实例之后分配的字节数            
        HINSTANCE   hInstance;             // 窗口类所在模块的实例句柄
        HICON       hIcon;                 // 窗口类的图标
        HCURSOR     hCursor;               // 窗口类的光标
        HBRUSH      hbrBackground;         // 窗口类的背景画刷
        LPCWSTR     lpszMenuName;          // 窗口类的菜单资源名
        LPCWSTR     lpszClassName;         // 窗口类的名称
        HICON       hIconSm;               // 窗口类的任务栏图标(new)    
    } WNDCLASSW
    

    新版本比老版本只多了两个成员变量:cbSize 和 hIconSm。


    三、窗口类结构体的使用

    示例代码如下:

    LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);                 // 窗口类的消息处理过程
     
    /* 新增版本的窗口类结构体 */
    WNDCLASSEX wndclassex;
    wndclassex.style = 0;                                                 // 窗口类型为缺省类型
    wndclassex.lpfnWndProc = WndProc;                                     // 定义窗口处理函数
    wndclassex.cbClsExtra = 0;                                            // 窗口类无扩展
    wndclassex.cbWndExtra = 0;                                            // 窗口实例无扩展
    wndclassex.hInstance = hInstance;                                     // 当前实例句柄
    wndclassex.hIcon = LoadIcon(NULL, IDI_APPLICATION);                   // 窗口的最小化图标为缺省图标
    wndclassex.hCursor = LoadCursor(NULL, IDC_ARROW);                     // 窗口采用箭头光标
    wndclassex.hbrBackground = (HBRUSH)(GetStockObject(WHITE_BRUSH));     // 窗口背景为白色
    wndclassex.lpszMenuName = NULL;                                       // 窗口无菜单
    wndclassex.lpszClassName = L"CLASSNAME";                              // 窗口类名
     
    /* 新增的成员变量 */
    wndclassex.cbSize = sizeof(WNDCLASSEX);                               // 窗口类的内存大小
    wndclassex.hIconSm = LoadIcon(NULL, IDI_APPLICATION);                 // 窗口类菜单栏的图标
    

    参考:

    Win32 程序开发:窗口类结构体WNDCLASS和WNDCLASSEX

    Windows编程——窗口类的注册


  • 相关阅读:
    约束性组件和非约束性组件
    react事件中的事件对象和常见事件
    react事件中的this指向
    【Java】操作数据库
    【设计思想】MVC模式
    【设计思想】面向对象
    【Java】(机考常用)类集
    【Java】机考常用操作
    【数据库】三级模式、二级映射
    【软件测试】圈复杂度
  • 原文地址:https://www.cnblogs.com/linuxAndMcu/p/12075288.html
Copyright © 2011-2022 走看看