关于WNDCLASSEX窗口类

  WNDCLASSEX窗口类原型如下

  

 1 typedef struct WNDCLASSEX {
 2 UINT cbSize;
 3 UINT style;
 4 WNDPROC lpfnWndProc;
 5 int cbClsExtra;
 6 int cbWndExtra;
 7 HINSTANCE hInstance;
 8 HICON hIcon;
 9 HCURSOR hCursor;
10 HBRUSH hbrBackground;
11 LPCTSTR lpszMenuName;
12 LPCTSTR lpszClassName;
13 HICON hIconSm;
14 } WNDCLASSEX, *PWNDCLASSEX;  

其十二个成员意义如下
1:cbSize,表示窗口的大小,取值一般为sizeof(WNDCLASSEX);
2:style,表示窗口的类型,取值是系统定义好的一组宏,例如:
CS_BYTEALIGNCLIENT
窗口的客户区域以“字符边界”对齐,当系统调整窗口的水平位置时,客户区域的左边坐标是8的整数倍

CS_BYTEALIGNWINDOW
窗口以“字符边界”对齐,当系统调整窗口的水平位置时,客户区域的左边坐标是8的整数倍

CS_CLASSDC
分配一个设备环境并被类中的所有窗体共享。它是可以适用于一个应用程序的若干线程创建的一个相同类的窗体。当多个线程试图同时使用相同的设备环境时,系统只允许
一个线程成功地进行绘图操作

CS_DBLCLKS
当用户双击窗口时,将向窗口函数发送鼠标双击消息

CS_GLOBALCLASS
指定此窗体类是一个应用程序全局类。应用程序全局类是由一个在进程中对所有模块有效的exe或dll注册的窗体类

CS_HREDRAW
如果窗口的位置或宽度发生改变,将重绘窗口

CS_NOCLOSE
窗口中的“关闭”按钮不可见

CS_OWNDC
为同一个窗口类中的每个窗口创建一个唯一的设备上下文

CS_PARENTDC
设置子窗口中剪下的矩形区域到父窗口中,以使子窗口可以在父窗口上绘图。指定该风格可以提高应用程序的性能

CS_SAVEBITS
把被窗口遮掩的屏幕图像作为位图保存起来。当该窗口被移动时,Windows操作系统使用被保存的位图来重建屏幕图像

CS_VREDRAW
如果窗口的位置或高度改变,将重绘窗口

3:lpfnWndProc是最重要的成员,当鼠标键盘在该窗口上操作时,该窗口收到了这个消息。此时他的lpfnWndProc指向一个回调函数,该窗口将参数送到回调函数,由回调函数执行动作,例如

  

wc.lpfnWndProc   = MyWindowProc; // MyWindowProc是一个回调函数

4:cbClsExtra,指定紧跟在窗口类结构后的附加字节数,即给类额外预留的空间,

5:cbWndExtra:指定紧跟在窗口实例的附加字节数,即给实例额外预留的空间

6:hInstance,该窗口的句柄

7:hIcon,该窗口图标的句柄

8:hCursor,该窗口光标形式的句柄

9:hbrBackground,背景画刷的句柄

10:lpszMenuName,指向菜单的句柄

11:.lpszClassName,指向类名称的句柄

12:hIconSm,这个图标显示的是窗口在任务栏处显示的图标

时间: 2024-12-12 11:33:58

关于WNDCLASSEX窗口类的相关文章

4.win32注册窗口类和创建窗口

1.注册窗口类函数 (1)RegisterClass/RegisterClassEx ATOM RegisterClass(CONST WNDCLASS *lpWndClass); ATOM RegisterClassEx(CONST WNDCLASSEX *lpwcx); 注册成功后,返回一个非0数字标识,失败返回0. (2)窗口类的风格 CS_GLOBALCLASS - 应用程序全局窗口类 CS_BYTEALIGNCLIENT - 窗口客户区的水平位置8整倍数据对齐 CS_BYTEALIGN

Window 窗口类

窗口类 WNDCLASS 总结 总结为下面的几个问题: 1. 什么是窗口类 2. 窗口类的三种类型 3. 窗口类各字段含义 4. 窗口类的注册和注销 5. 如何使用窗口类,子类化.超类化是什么 下面分别描述: 1. 什么是窗口类? 窗口类定义了一系列属性,系统使用这些属性作为模板来创建出一个或多个 window (窗口). 每个窗口类都关联了一个窗口过程函数(window procedure), 由窗口类创建出的所有窗口(window), 都共享同一个窗口过程函数. 在进程中创建窗口之前必须先注

VC CreateWindow 找不到窗口类

VC CreateWindow 找不到窗口类,有提示是因为没有调用RegisterClass注册窗口类,可是我已经使用RegisterClassEx注册了! //函数:MyRegisterClass //作用:注册窗口类 ATOM MyRegisterClass(HINSTANCE hInstance) { WNDCLASSEX wndclass; wndclass.cbSize = sizeof(wndclass); wndclass.style = CS_HREDRAW | CS_VREDR

窗口类(Window Class)概述

windows窗口编程(通常意义上的win32)有几个比较核心的概念:入口函数WinMain.窗口类Window Class.窗口过程.消息处理机制.通用控件.本文主要介绍窗口类的相关概念,包括: 窗口类的类型: 窗口类的注册及使用: 窗口类的构成. 窗口类是基于进程的,每个应用程序在创建窗口之前必须注册窗口类(或者使用操作系统定义的窗口类),使用完成之后需要销毁(反注册). 介绍窗口类的主要目的在于明确windows窗口编程的相关概念,掌握windows内部对于GUI处理的机制.如果你在用mf

Win32API全局窗口类的注册与创建

  Win32API全局窗口类的注册 应用程序全局窗口类的注册 typedef struct tagWNDCLASSEX { UINT      cbSize; //结构体的大小,用sizeof得出 UINT      style; //窗口类的风格,默认设置左右画出 WNDPROC   lpfnWndProc; //回调函数,窗口处理函数,干活的人 int       cbClsExtra; //窗口类的附加数据Buff的大小 int       cbWndExtra; //窗口的附加数据Bu

窗口的子类化与超类化——子类化是窗口实例级别的,超类化是在窗口类(WNDCLASS)级别的

1. 子类化 理论:子类化是这样一种技术,它允许一个应用程序截获发往另一个窗口的消息.一个应用程序通过截获属于另一个窗口的消息,从而实现增加.监视或者修改那个窗口的缺省行为.子类化是用来改变或者扩展一个已存在的窗口的行为.而不用重新开发的有效途径.想要获得那些预定义控件窗口类(按钮控件.编辑控件.列表控件.下拉列表控件.静态控件和滚动条控件)的功能而又要修改它们的某些行为的一个便利的方法就是对它们进行子类化.例如,对于一个在对话框中的多行编辑框来说,当用户按下Enter键时,对话框会关闭.通过对

注册窗口类

一.MFC应用程序与win32应用程序的区别 Win32编程:是调用Win32SDK中的API函数进行编程,注册窗口类,建立窗口,现实窗口,设置消息循环……等等的方式建立Windows程序,以前的Windows程序都这样开发的,写程序要写大量代码. MFC库:后来微软为了方便编程人员开发,将Win32SDK中的函数进行C/C++封装,于是就是MFC库(架构),开发程序比以往的Win32SDK方式更加简便快捷. 相同:调用的API都是Win32SDK的API 不同:MFC的程序执行起来慢,而且用M

第3章 窗口与消息_3.2面向对象的窗口类的封装

3.2.1 MFC单文档大致框架 (1)MFC类继承略图 (2) MFC单文档应用程序类层次结构图 CWinApp:应用程序类,每个应用程序有且只有一个继承于CWinApp的派生类对象 CWnd:是一个通用的窗口类,用于提供Windows中的所有通用特性.对话框和控件. (3)应用程序执行过程图 3.2.2 应用程序QWinApp的设计 //QWinApp.h文件 #include "stdAfx.h" class QWinApp { public: QWinApp(); ~QWinA

5.窗口类和窗口的附加数据

附加数据的作用: 注册窗口时,设置这两个数据的大小,可以提供窗口类和窗口存放自己的数据的空间. 1.窗口类附加数据 int cbClsExtra    //窗口类附加数据buff大小 (1)用法: a.申请缓冲区 窗口对象.cbClsExtra = 200;  //一般赋4的倍数 b.写入数据 DWORD SetClassLong( HWND  hWnd;         //窗口句柄 int       nIndex;        //字节索引号(从哪个字节开始存) LONG  dwNewL