当前位置: 首页 > news >正文

WNDCLASSEX

WNDCLASSEX是一个窗口,最重要的成员是lpfnWndProc。前缀 lpfn 表示该成员是一个指向函数的长指针。在 Win32中由于内存模式是 FLAT 型,所以没有 near 或 far 的区别。

描述

每一个窗口类必须有一个窗口过程,当 Windows 把属于特定窗口的消息发送给该窗口时,该窗口的窗口类负责处理所有的消息,如键盘消息或鼠标消息。由于窗口过程差不多智能地处理了所有的窗口消息循环,所以您只要在其中加入消息处理过程即可。

结构体原型:

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;

说明

WNDCLASSEX 结构用于注册窗口类

注册实例:

ATOM MyRegisterClass( HINSTANCE hInstance )
{
WNDCLASSEX wcex;
wcex.cbSize = sizeof( WNDCLASSEX );
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = (WNDPROC) WndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIcon( NULL, IDI_APPLICATION );
wcex.hCursor = LoadCursor( NULL, IDC_ARROW );
wcex.hbrBackground = (HBRUSH) GetStockObject( WHITE_BRUSH );
wcex.lpszMenuName = NULL;
wcex.lpszClassName = "My Class";
wcex.hIconSm = LoadIcon( NULL, IDI_WINLOGO );
return RegisterClassEx( &wcex );
}

参数

1.cbSize:

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

2.style:

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

3.lpfnWndProc:

窗口处理函数的指针

4.cbClsExtra:

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

5.cbWndExtra:

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

6.hInstance:

本模块的实例句柄。

7.hIcon:

图标的句柄。

8.hCursor:

光标的句柄。

9.hbrBackground:

背景画刷的句柄。

10.lpszMenuName:

指向菜单的指针

11.lpszClassName:

指向类名称的指针。

12.hIconSm:

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

相关文章:

  • C++强制类型转换运算符(static_cast、reinterpret_cast、const_cast和dynamic_cast)
  • C++ 虚函数表 vfptr
  • WM_NCHITTEST
  • CreateProcess函数详解
  • CEF类笔记-cef_app
  • cef_client.h
  • cef_browser.h
  • C++ List的用法(整理)
  • cef_v8.h
  • SendMessage 用法详解及消息详解
  • TCP协议下的recv函数
  • CEF网址打不开,提示Check failed: fallback_available == base::win::GetVersion() > base::win::VERSION_WIN8
  • Mt.exe
  • 你所不知道的C和C++运行库
  • 静态库和动态库冲突
  • #Java异常处理
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • E-HPC支持多队列管理和自动伸缩
  • express.js的介绍及使用
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • LeetCode算法系列_0891_子序列宽度之和
  • oldjun 检测网站的经验
  • Python利用正则抓取网页内容保存到本地
  • Quartz初级教程
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 复杂数据处理
  • 给第三方使用接口的 URL 签名实现
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • 移动端 h5开发相关内容总结(三)
  • HanLP分词命名实体提取详解
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • #WEB前端(HTML属性)
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (11)MATLAB PCA+SVM 人脸识别
  • (2)Java 简介
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (接口自动化)Python3操作MySQL数据库
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (轉)JSON.stringify 语法实例讲解
  • ****Linux下Mysql的安装和配置
  • .gitignore文件设置了忽略但不生效
  • .NET/C# 的字符串暂存池
  • .NET6使用MiniExcel根据数据源横向导出头部标题及数据
  • .Net中的设计模式——Factory Method模式
  • .w文件怎么转成html文件,使用pandoc进行Word与Markdown文件转化
  • /dev下添加设备节点的方法步骤(通过device_create)
  • @软考考生,这份软考高分攻略你须知道
  • [ C++ ] STL---string类的模拟实现
  • [AUTOSAR][诊断管理][ECU][$37] 请求退出传输。终止数据传输的(上传/下载)
  • [C# WPF] 如何给控件添加边框(Border)?
  • [C#]使用PaddleInference图片旋转四种角度检测