我是靠谱客的博主 真实鸭子,最近开发中收集的这篇文章主要介绍WNDCLASS 结构体介绍,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

数据结构原型  typedef struct_WNDCLASS{

  UINT style;

  WNDPROC lpfnWndProc;

  int cbClsExtra;

  int cbWndExtra;

  HANDLE hInstance;

  HICON hIcon;

  HCURSOR hCursor;

  HBRUSH hbrBackground;

  LPCTSTR lpszMenuName;

  LPCTSTR lpszClassName;

  }WNDCLASS;

结构说明

  WNDCLASS 结构包含了RegisterClass函数注册的类属性

分量简介

  style: 指定类风格。这些风格可通过按位或操作组合起来。风格如下:

  CS_BYTEALIGNCLIENT: 在字节边界上(在x方向上)定位窗口的用户区域的位置

  CS_BYTEALIGNWINDOW: 在字节边界上(在x方向上)定位窗口的位置

  CS_CLASSDC: 该窗口类的所有窗口实例都共享一个窗口类DC

  CS_DBLCLKS: 允许向窗口发送双击鼠标键的消息

  CS_GLOBALCLASS: 当调用CreateWindow 或 CreateWindowEx 函数来创建窗口时允许它的hInstance参数和注册窗口类时传递给

  RegisterClass 的 hInstance参数不同。如果不指定该风格,则这两个 hInstance 必须相同。

  CS_HREDRAW: 当水平长度改变或移动窗口时,重画整个窗口

  CS_NOCLOSE: 禁止系统菜单的关闭选项

  CS_OWNDC: 给予每个窗口实例它本身的DC。注意,尽管这样是很方便,但它必须慎重使用,因为每个DC大约要占800个字节的内存。

  CS_PARENTDC: 将子窗口的裁剪区域设置到父窗口的DC中去,这样子窗口便可以在父窗口上绘制自身。注意,这是子窗口还是从系统缓存中获取DC,而不是使用父窗口的DC。使用该风格可以提高系统性能。

  CS_SAVEBITS: 以位图形式保存被该窗口遮挡的屏幕部分,这样当给窗口移动以后,系统便可以用该保存的位图恢复屏幕移动的相应部分,从而系统不用向被该窗口遮挡的窗口发送 WM_PAINT 消息。该特性对于菜单类型的窗口比较合适,因为它通常是简短的显示一下之后便消失。设置该特性将增加显示该窗口的时间,因为它通常要先分配保存位图的内存。

  CS_VREDRAW: 当垂直长度改变或移动窗口时,重画整个窗口

  lpfnWndProc: 指向窗口过程

  cbClsExtra: 指定紧随在 WNDCLASS 数据结构后分配的字节数。系统将其初始化为零。

  cbWndExtra: 指定紧随在窗口实例之后分配的字节数,系统将其初始化为零。如果应用程序正在用WNDCLASS结构注册一个在RC

  资源描述文件中用CLASS指令创建的对话框时,它必须设置这个字段为 DLGWINDOWEXTRA。

  hInstance: 标识了该窗口类的窗口过程所在的模块实例的句柄,不能为NULL。

  hIcon: 标识了该窗口类的图标。hIcon字段必须是一个图标的句柄;若hIcon字段为NULL,则无论何时用户把应用程序缩至最小时,应用程序必须画一个图标。

  hCursor: 标识该窗口类的光标,hCursor必须是一个光标资源的句柄。若hCursor字段为NULL,则无论何时鼠标移到应用程序窗口时,应用程序必须显式设置光标形状。

  hbrBackground: 标识了该窗口类的背景画笔。hbrBackground字段必须是用于绘制背景的物理刷子的句柄,或者是一个颜色的值。如果给出一个颜色的值,它必须是下面列出的标准系统颜色之一(系统将对所选颜色加1)。如果给出了颜色值,它必须是转

  换成下列的HBRUSH类型之一的颜色:

  COLOR_ACTIVEBORDER

  COLOR_ACTIVECAPTION

  COLOR_APPWORKSPACE

  COLOR_BACKGROUND

  COLOR_BTNFACE

  COLOR_BTHSHADOW

  COLOR_BTNTEXT

  COLOR_CAPTIONTEXT

  COLOR_GRAYTEXT

  COLOR_HIGHLIGHT

  COLOR_HIGHLIGHTTEXT

  COLOR_INACTIVEBORDER

  COLOR_INACTIVECAPTION

  COLOR_MENU

  COLOR_MENUTEXT

  COLOR_SCROLLBAR

  COLOR_WINDOW

  COLOR_WINDOWFRAME

  COLOR_WINDOWTEXT

  当hbrBackground字段为NULL时,每当需要绘制其用户区域时,应用程序必须自己来绘制其背景。应用程序可以通过处理WM_ERASEBKGND 消息或检查由 BeginPaint 函数填写的 PAINTSTRUCT 结构的fErase 字段来确定背景什么时候需要着色。

  lpszMenuName   指向NULL结束的字符串,该字符串描述菜单的资源名,如同在资源文件里显示的名字一样。若使用一个整数标识菜单,可以使用MAKEINTRESOURCE宏。如果lpszMenuName为NULL,

  那么该窗口类的窗口将没有默认菜单。

   lpszClassName

  指向NULL结束的字符串,或者是一个原型(atom)。若该参数是一个原型,它必须是一个有先前调用RegisterClass或者 RegisterClassEx函数产生的类原型。类原型必须作为

  lpszClassName的低字,高字必须为0.若lpszClassName是一个 字符串,它描述了窗口类名。这个类名可以是由RegisterClass或者RegisterClassEx注册的名字,或者是任何预定义

  的控件类名。

  结构信息

  Header 在winuser.h声明,包含windows.h

最后

以上就是真实鸭子为你收集整理的WNDCLASS 结构体介绍的全部内容,希望文章能够帮你解决WNDCLASS 结构体介绍所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部