Windows零基础入门:2.15 窗口类使用之窗口类结构体详解
手机阅读 | 转发赚积分
手机收藏 | 分享给好友
手机阅读 | 转发赚积分
手机收藏 | 分享给好友
手机收藏 | 分享给好友
本节课详细讲解了窗口类结构体的类型声明、窗口类结构体变量定义以及注册窗口类的相关背景知识,你可以全面的了解一下这个结构体,而不是只是当做一个类型来看待。为什么要用WNDCLASS,不只是设计出来了我们就用。有时候我们需要探究一下设计的初衷,才会发觉它的好处,也能更好的掌握。
在《Windows零基础入门:2.14 (1)窗口类使用完整代码演示和详细注释》一节中,对于窗口类的使用代码细节,给出了详细的代码和相应的注释。能帮你看懂这个程序做了些什么。不过,请不要停留于此,这里是很概要性的,所以接下来的几节课将会详细讲述每一个部分。
我们要先创建一个窗口类结构体变量,然后用结构体变量存储的窗口类信息去注册窗口类,然后就可以用注册好的窗口类来创建窗口。
而我们要创建窗口类结构体变量,就要使用WNDCLASS结构体类型。实际上,我们还可以用WNDCLASSEX结构体类型来创建。WNDCLASSEX是对WNDCLASS的扩展。WNDCLASSEX比WNDCLASS结构体类型多了两个成员,一个是表示结构体大小的成员,一个是存储小图标的成员hIconSm,就是Small Icon的意思。而中间的一个hIcon图标就是比较大的图标。具体我们将在后面解释。你只要知道,带有EX字样的结构体或者Ex字样的函数都是对原函数的扩展,完成的功能都是一样的。
下面是WNDCLASS结构体类型的定义,使用typedef重命名结构体类型,命名为WNDCLASS,加上*再命名一个指向结构体类型的指针类型。这是C/C++的基本语法,我想这点基础你应该还是有的。我们课程的零基础是说你对于Windows可以一无所知,但是对于编程语言要有基本的了解哦。
typedef struct tagWNDCLASS {
UINT style;
WNDPROC lpfnWndProc;
int cbClsExtra;
int cbWndExtra;
HINSTANCE hInstance;
HICON hIcon;
HCURSOR hCursor;
HBRUSH hbrBackground;
LPCTSTR lpszMenuName;
LPCTSTR lpszClassName;
} WNDCLASS, *PWNDCLASS;
typedef struct tagWNDCLASSEX {
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;
WNDCLASS wndclass;
RegisterClass(&wndclass);
当前文章为会员文章,请前往[用户中心]开通会员后继续阅读。
Win32课程菜单
-
- 第1节 指定入口点函数
- 第2节 VS创建Win32项目
- 第3节 exe程序文件
- 第4节 WinMain函数
- 第5节 实例句柄和命令行
- 第6节 第一个程序
- 第7节 Win32窗口机制和消息机制
- 第7节+ 消息机制补充说明(消息队列)
- 第8节 什么是窗口类
- 第9节 窗口类、进程和窗口过程
- 第10节 三种窗口类
- 第11节 修改窗口类
- 第12节 修改系统窗口类(子类化)
- 第13节 修改窗口类的机制和论证
- 第14节 窗口类使用
- 第15节 窗口类使用之窗口类结构体
- 第16节 窗口类结构体之窗口类风格
- 第17节 窗口类结构体之去除窗口类风格
- 第18节 窗口类结构体之水平重绘和垂直重绘
- 第19节 窗口类结构体之CS_DBLCLKS
- 第20节 窗口类结构体之CS_OWNDC
- 第21节 窗口类结构体之CS_CLASSDC
- 第22节 窗口类结构体之CS_PARENTDC
- 第23节 窗口类结构体之CS_NOCLOSE
- 第24节 窗口类结构体之CS_SAVEBITS
- 第25节 窗口类结构体之CS_BYTEALIGNCLIENT
- 第26节 窗口阴影效果CS_DROPSHADOW解密