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

一、窗口类结构体简介

窗口类结构体包含了窗口的各种参数信息。比如:窗口的图标、菜单栏、背景颜色、窗口的消息处理等等。

窗口类结构体有两个:WNDCLASS(早期版本) 和 WNDCLASSEX(新版本)。至于为什么有 WNDCLASSEX 还要保留老版本的 WNDCLASS?主要是为了兼容以前使用老版本开发的 Win32 程序才保留的。

二、窗口类结构体的成员变量

这里暂时只介绍新版本的 WNDCLASSEX,也更推荐使用新版本的。

typedef struct tagWNDCLASSEXW  {
    UINT        cbSize;                // 窗口类结构体的内存大小(new)
    UINT        style;                 // 类风格
    WNDPROC     lpfnWndProc;           // 窗口的处理过程
    int         cbClsExtra;            // 指定紧随在 WNDCLASS 数据结构后分配的字节数
    int         cbWndExtra;            // 指定紧随在窗口实例之后分配的字节数
    HINSTANCE   hInstance;             // 窗口类所在模块的实例句柄
    HICON       hIcon;                 // 窗口类的图标
    HCURSOR     hCursor;               // 窗口类的光标
    HBRUSH      hbrBackground;         // 窗口类的背景画刷
    LPCWSTR     lpszMenuName;          // 窗口类的菜单资源名
    LPCWSTR     lpszClassName;         // 窗口类的名称
    HICON       hIconSm;               // 窗口类的任务栏图标(new)
} WNDCLASSW

新版本比老版本只多了两个成员变量:cbSize 和 hIconSm。

三、窗口类结构体的使用

示例代码如下:

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);                 // 窗口类的消息处理过程

/* 新增版本的窗口类结构体 */
WNDCLASSEX wndclassex;
wndclassex.style = 0;                                                 // 窗口类型为缺省类型
wndclassex.lpfnWndProc = WndProc;                                     // 定义窗口处理函数
wndclassex.cbClsExtra = 0;                                            // 窗口类无扩展
wndclassex.cbWndExtra = 0;                                            // 窗口实例无扩展
wndclassex.hInstance = hInstance;                                     // 当前实例句柄
wndclassex.hIcon = LoadIcon(NULL, IDI_APPLICATION);                   // 窗口的最小化图标为缺省图标
wndclassex.hCursor = LoadCursor(NULL, IDC_ARROW);                     // 窗口采用箭头光标
wndclassex.hbrBackground = (HBRUSH)(GetStockObject(WHITE_BRUSH));     // 窗口背景为白色
wndclassex.lpszMenuName = NULL;                                       // 窗口无菜单
wndclassex.lpszClassName = L"CLASSNAME";                              // 窗口类名

/* 新增的成员变量 */
wndclassex.cbSize = sizeof(WNDCLASSEX);                               // 窗口类的内存大小
wndclassex.hIconSm = LoadIcon(NULL, IDI_APPLICATION);                 // 窗口类菜单栏的图标

参考:

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

Windows编程——窗口类的注册

原文地址:https://www.cnblogs.com/linuxAndMcu/p/12075288.html

时间: 2024-11-10 01:09:28

Win32 程序开发:窗口类结构体 WNDCLASS 和 WNDCLASSEX的相关文章

Win32 程序开发:创建一个应用程序窗口

一.创建一个应用程序窗口 代码如下: // 头文件 #include <windows.h> // 全局变量 WCHAR g_lpszClassName[] = L"CLASSNAME"; WCHAR g_lpszWindowName[] = L"哈喽,新的征程"; // 函数声明 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); // 应用程序主函数 INT APIENTRY WinMain(H

windows程序开发窗口截图实现一

1.2编写窗口截图 本次选择窗口截图一共3步:鼠标按下.移动.弹起. 知识点:改变鼠标图标.截图函数封装.窗口画图 本节新学习AIP: LoadCursor SetCursor(m_hCursor); SetCapture(); CreateDC CreateCompatibleDC CreateCompatibleBitmap ClientToScreen WindowFromPoint CreateSolidBrush FrameRect -------------.. 视频观看地址: ht

Windows RT 应用程序开发介绍培训的讲义

http://www.cnblogs.com/lxconan/archive/2012/09/09/2677957.html 最近从架构的角度做了一个 Windows 8 下 Metro Style 应用程序开发介绍的讲座.以下是讲稿. 如有问题欢迎指正. 下载地址: 幻灯片 附加说明 1          概述 这篇的标题叫做Windows RT Introduction而非Windows 8 Introduction是想强调此次介绍是从开发人员的角度而不是普通用户的角度出发的.同时,我们关注

WIN32界面开发之三:DUI雏形开发(一)

http://blog.csdn.net/harvic880925/article/details/9491387 2013-07-26 09:26 3585人阅读 评论(12) 收藏 举报 目录(?)[+] 前言:这部分涉及工程比较大,所以我打算分开为两篇来写,第一篇完成基本框架的构建,第二篇添加上EVENT和NOTIFY机制. 完成目标:仿照DirectUI,完成一个基本雏形,开发一个布局控件(Dialog),和一个按钮控件(Button),通过XML来布局窗体,最后按钮响应点击.鼠标移动等

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

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

OD调试1--第一个win32程序

OD调试一:第一个Win32程序的修改 在软件开发的过程中,程序员会使用一些调试工具,以便高效地找出软件中存在的错误.而在逆向分析领域,分析者也会利用相关的调试工具来分析软件的行为并验证分析结果.由于操作系统都会提供完善的调试接口,所以利用各类调试工具可以非常方便灵活地观察和控制目标软件.在使用调试工具分析程序的过程中,程序会按调试者的意愿以指令为单位执行. 调试逆向分为动态分析技术和静态分析技术. 动态分析技术指的是使用调试工具加载程序并运行,随着程序运行,调试者可以随时中断目标的指令流程,以

C语言实现Win32第一个窗口

Windows顾名思义就是窗口,将窗口程序加入到操作系统中具有里程碑式的意义.掌握窗口程序的实现是学习Win32程序实现的重要环节. 一个Win32窗口程序的实现通常要经历下面3个步骤: 1.注册窗口(窗口的风格.图标.光标.大小等) 2.创建.显示窗口 3.消息循环. 同时需要一个入口函数WinMain和一个消息响应函数. WinMain()函数是应用程序开始执行时的入口点,通常也是应用程序结束任务退出时的出口点.它与DOS程序的main()函数起同样的作用,不同的是,WinMain()函数必

C语言Windows程序开发—TextOut函数介绍【第02天】

(一)TextOut函数的参数介绍: 1 BOOL TextOut ( //如果函数调用成功,返回TRUE,否则,返回FALSE 2 HDC hdc, //用于显示字符串的控件ID 3 int nXStart, //字符串所在起始位置左上角(X,Y)的X坐标 4 int nYStart, //字符串所在起始位置左上角(X,Y)的Y坐标 5 LPCTSTR lpString, //显示的字符串内容 6 int cbString //字符串长度 7 ) ; 函数调用示例: 1 TextOut ( h

C语言Windows程序开发—CreateWindow函数介绍【第03天】

(一)CreateWindow函数的参数介绍: 1 HWND CreateWindow( 2 LPCTSTR lpClassName, //Windows窗口中预定义的控件结构体,包括:BUTTON(按钮),EDIT(文本框),LISTBOX(列表),MDICLIENT(子窗口),SCROLLBAR(滚动条),RICHEDIT(富文本),STATIC(静态控件): 3 LPCTSTR lpWindowName, //窗口控件中显示的内容,即Caption属性: 4 DWORD dwStyle,