WNDCLASS 窗口类结构

Windows 的窗口总是基于窗口类来创建的,窗口类同时确定了处理窗口消息的窗口过程(回调函数)。

在创建应用程序窗口之前,必须调用 RegisterClass 函数来注册窗口类。该函数只需要一个参数,即指向 WNDCLASS 窗口类的指针。因为 WNDCLASS 类包含了窗口所拥有的基本属性。

结构原型:

  1. typedef struct tagWNDCLASSW {
  2. UINT        style;
  3. WNDPROC     lpfnWndProc;
  4. int         cbClsExtra;
  5. int         cbWndExtra;
  6. HINSTANCE   hInstance;
  7. HICON       hIcon;
  8. HCURSOR     hCursor;
  9. HBRUSH      hbrBackground;
  10. LPCWSTR     lpszMenuName;
  11. LPCWSTR     lpszClassName;
  12. } WNDCLASSW, *PWNDCLASSW, NEAR *NPWNDCLASSW, FAR *LPWNDCLASSW;

复制代码

成员解析:

成员 含义
style 指定窗口类型,各种“类风格”(详见下方↓)可以使用按位或操作符组合起来
lpfnWndProc 指定窗口过程(必须是回调函数)
cbClsExtra 预留的额外空间,一般为 0
cbWndExtra 预留的额外空间,一般为 0
hInstance 应用程序的实例句柄
hIcon 为所有基于该窗口类的窗口设定一个图标
hCursor 为所有基于该窗口类的窗口设定一个鼠标指针
hbrBackground 指定窗口背景色
lpszMenuName 指定窗口菜单
lpszClassName 指定窗口类名

style 类风格解析

类风格 含义
CS_VREDRAW 移动或者调整窗口的高度(垂直方向)时,重绘整个窗口
CS_HREDRAW 移动或者调整窗口的宽度(水平方向)时,重绘整个窗口
CS_DBLCLKS 当用户光标在窗口内双击时,允许发送双击消息给窗口过程
CS_OWNDC 给予每个窗口实例分配一个唯一的 DC(注意,尽管这样是很方便,但它必须慎重使用,因为每个 DC 大约要占 800 个字节的内存)
CS_CLASSDC 该窗口类的所有窗口实例都共享一个窗口类 DC
CS_PARENTDC 1. 将子窗口的裁剪区域设置到父窗口的 DC 中去,这样子窗口便可以在父窗口上绘制自身。(注意,这是子窗口还是从系统缓存中获取 DC,而不是使用父窗口的 DC。)
2. 指定该风格可以提高系统性能
CS_NOCLOSE 禁止系统菜单的关闭选项
CS_SAVEBITS 1. 以位图形式保存被该窗口遮挡的屏幕部分,这样当给窗口移动以后,系统便可以用该保存的位图恢复屏幕移动的相应部分,从而系统不用向被该窗口遮挡的窗口发送 WM_PAINT 消息
2. 该特性对于菜单类型的窗口比较合适,因为它通常是简短的显示一下之后便消失
3. 设置该特性将增加显示该窗口的时间,因为它通常要先分配保存位图的内存
CS_BYTEALIGNCLIENT 在字节边界上(在 x 方向上)定位窗口的用户区域的位置
CS_BYTEALIGNWINDOW 在字节边界上(在 x 方向上)定位窗口的位置
CS_GLOBALCLASS 1. 当调用 CreateWindow 或 CreateWindowEx 函数来创建窗口时允许它的 hInstance 参数和注册窗口类时传递给 RegisterClass 的 hInstance 参数不同
2. 如果不指定该风格,则这两个 hInstance 必须相同

【API档案】版权归鱼C工作室(www.fishc.com)所有,转载请注明来源。

时间: 2024-08-30 06:59:19

WNDCLASS 窗口类结构的相关文章

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

一.窗口类结构体简介 窗口类结构体包含了窗口的各种参数信息.比如:窗口的图标.菜单栏.背景颜色.窗口的消息处理等等. 窗口类结构体有两个:WNDCLASS(早期版本) 和 WNDCLASSEX(新版本).至于为什么有 WNDCLASSEX 还要保留老版本的 WNDCLASS?主要是为了兼容以前使用老版本开发的 Win32 程序才保留的. 二.窗口类结构体的成员变量 这里暂时只介绍新版本的 WNDCLASSEX,也更推荐使用新版本的. typedef struct tagWNDCLASSEXW {

《Windows程序设计》读书笔三 窗口与消息

第三章 窗口于消息 前面的例子都使用MessageBox来创建窗口 ,单他所创建的窗口灵活性有限. 3.1 窗口的创建 只要调用CreateWindow函数即可 3.1.1 系统结构概述 一个应用程序窗口可能包含,标题栏,菜单栏,工具栏,滚动条.另外还有一种类型的窗口是对话框,这种窗口可以不带标题栏 还可能包含,按钮,单选按钮,复选框,列表框,滚动条,文本框等.每一个这些对象都被称为 子窗口,或者 控件窗口 当用户改变窗口尺寸时,Windows便向应用程序发送一条携带新窗口尺寸相关的信息,接着应

第三章、窗口与消息

应用程序的每个窗口都有一个窗口过程函数与之关联,Windows通过调用窗口过程向窗口传递消息.窗口过程依据消息做相应处理,然后将控制权返还给Windows. 窗口类标识了用于处理传递给窗口的消息的窗口过程,允许多个窗口共享同一窗口类. 消息队列中存放着应用程序可能创建的所有窗口的消息,消息循环从消息队列中检索消息,并将其分发给相应的窗口过程. #include <Windows.h> #include <mmsystem.h> #pragma comment(lib, "

Windos编程,获取窗口的尺寸

前言 学习小甲鱼的画\(sin\)函数的例子,发现最开始创建窗口时cxClient和cyClient不能很好的赋值 WM_SIZE和WM_PAINT 经过我的实践发现:在刚刚创建窗口时WM_SIZE和WM_PAINT消息的调用顺序是随机的,而且大部分时候先是WM_PAINT 如果cxClient和cyClient需要经过WM_SIZE来初始化,并且WM_PAINT消息处理中需要使用这两个变量,那么第一次的WM_PAINT可能会不正常 这个时候可以选择手动调整一下窗口的大小,但是用户体验肯定是很差

句柄、Windows数据类型

WORD:16位无符号整型数据 DWORD:32位无符号整型数据(DWORD32) DWORD64:64位无符号整型数据 INT:32位有符号整型数据类型 INT_PTR:指向INT数据类型的指针类型 INT32:32位符号整型 INT64:64位符号整型 UINT:无符号INT LONG:32位符号整型(LONG32) ULONG:无符号LONG LONGLONG:64位符号整型(LONG64) SHORT:无符号短整型(16位) LPARAM:消息的L参数 WPARAM:消息的W参数 HAN

windows下利用微软的SpeechSDK实现语音控制

语音识别是当前研究的热点,我们可以利用微软的语音识别引擎来进行二次开发.首先需要安装微软的SpeechSDK,安装完成后配置项目的包含目录和库目录,这些都不是重点,不会的可以去百度.然后就可以写代码了,码农嘛,还是看代码有感觉. 源文件<Demo.cpp> #include <Windows.h> #include <atlstr.h> #include <sphelper.h> #include <sapi.h> #include <co

MFC创建一个窗口五大步

.窗口的创建步骤: 1.设计一个窗口类: WNDCLASS结构体参数: (1)       UINT style:窗口类的类型, (2)       WNDPROC lpfnWndProc:窗口的过程,接收一个指针,在程序中会将一个回调函数赋给他,有系统自动调用 (3)       int cbClsExtra:追加一定字节的额外存储空间,附加内存空间,常设置为0 (4)       int cbWndExtra:窗口的附加内存,常置为0 (5)       HINSTANCE hInstanc

(C)第一个Windows 32 API的窗口程序(

#include <windows.h> LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int ICmdShow) { static TCHAR szAppName[] = TEXT("windowOfC"); HWND hwnd;//窗体句柄变量 MS

WINDOWS消息和窗口简介

一.WINDOWS的消息和窗口简介:1.什么是windows在这里我就不介绍了,但是作为一个程序员我们要知道WINDOWS最重要的一个也是我们程序员常用的一个东西就是消息.窗口是以消息的形式输入的,窗口也用消息与其它窗口通讯. 2.我们常会说windows给程序发送了一个消息,其实这是指windows调用程序中的一个函数,该函数的参数描述了这个特定消息.这种位于windows程序中的函数称为“窗体消息处理程序”.程序建立的每一个窗体都有相关的窗口消息处理程序.这个窗口消息处理程序是一个函数,既可