# 变量类型 HINSTANCE

HINSTANCE 是 Windows 里的一中数据类型,其实就是一个无符号的长整形,是 32 位的,是用于标示(记录)一个程序的实例。它与 HMODULE 是一样的(通用的,这两种类型最终就是无符号长整形)。

HINSTANCE, 分开看就是 H + INSTANCE, 其中 H 代表 HANDLE(再程序中翻译为 “句柄” 的意思),INSTANCE 中文就是 "实例" 的意思。

想得到一个实例, 可通过全局 API 函数 GetModuleHandle 得到,参数传入模块的名字(exe 或者 DLL 的名字),返回的类型是 HMODULE,其实就是 HINSTANCE 类型。 或者在入口函数(如 WinMain)的参数可以得到(是操作系统传进入的),你可以在入口函数里把这个变量的值保存起来以方便后面使用。

# 变量类型 HWND

  1. HWND 是一个基本类型,和 char int 等同级别的,可以把它当做 long 型去看待。它就像是身份证号一样,人生下来政府给发个身份证号,窗口创建系统就分配一个句柄。通过身份号,可以知道人的 姓名、住址、年龄。通过句柄也就能知道窗口类,窗口指针。
  2. HWND:h 是类型描述,表示句柄 (handle), Wnd 是变量对象描述,表示窗口,所以 hWnd 表示窗口句柄

# hWnd 属性:

返回窗体或控件的句柄(注意 OLE 容器控件不支持该属性。句柄:是由操作环境定义的一个唯一的整数值,它被程序用来标识或者切换到对象,如窗体或控件等。)。

# 语法:

object.hWnd

object 所在处代表一个对象表达式,其值是 “应用于” 列表中的一个对象。

# 变量类型 HDC

HDC 是 Windows 的设备描述表句柄。

在 Windows 环境中,句柄是用来标识被应用程序所建立或使用的对象的唯一整数,这些对象包括:

  • 模块 (module)
  • 任务 (task)
  • 实例 (instance)
  • 文件 (file)
  • 内存块 (block of memory)
  • 菜单 (menu)
  • 控制 (control)
  • 字体 (font)
  • 资源 (resource)
  • 包括图标 (icon)
  • 光标 (cursor)
  • 字符串 (string) 等
    GDI 对象 (GDI object), 包括位图 (bitmap),画刷 (brush),元文件 (metafile), 调色板 (palette),画笔 (pen),区域 (region),以及设备描述表 (device context)。

HDC 是指窗体、控件的句柄,是长整类型
这是 windows 编程里很重要的一个类型,它唯一标识了一个对象 比如窗口,按钮,视图等,也就是一个代号
另外它和 C++ 没有什么直接的关系,HDC 是 windows 系统 API 中定义的一个数据类型

# Windon

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

  • UINT cbSize:此结构的大小(以字节为单位)。将此成员设置为 sizeof (WNDCLASSEXW)。

  • UINT style: 类样式。在这种情况下,CS_HREDRAW 类样式指定如果移动或大小调整更改了客户区的宽度,则 CS_VREDRAW 重绘整个窗口,类样式指定如果移动或大小调整更改客户区的高度,则重绘整个窗口区域。

  • WNDPROC lpfnWndProc: 指向将处理使用此窗口类创建的任何窗口的窗口消息的窗口过程的指针。在这种情况下,我们指定了 WndProc 之前声明的尚未定义的函数。

  • int cbClsExtra:要在窗口类结构之后分配的额外字节数。此处不使用此参数,应设置为 0。

  • int cpWndExtra: 在窗口实例之后分配的额外字节数。此处不使用此参数,应设置为 0。

  • HINSTANCE hInstance: 包含该类的窗口过程的实例的句柄。该模块实例句柄被传递给 WinMain 稍后将显示的函数。

  • HICON hIcon:类图标的句柄。此图标将用于在任务栏和窗口标题栏的左上角表示使用此类创建的窗口。您可以使用该函数从资源文件加载图标 LoadIcon。如果此值为 NULL(或 nullptr),则使用默认应用程序图标。

  • HCURSOR hCursor: 类游标的句柄。这必须是有效游标资源的句柄。对于此演示,我们将通过指定 来使用默认箭头图标 LoadCursor (nullptr, IDC_ARROW)。

  • HBRUSH hbrBackground: 类背景画笔的句柄。该成员可以是用于绘制背景的画笔句柄,也可以是颜色值。颜色值必须是以下标准系统颜色之一(值 1 必须添加到所选颜色)。如果给定颜色值,则必须将其转换为以下类型之一 HBRUSH:

HBRUSH

COLOR_ACTIVEBORDER
COLOR_ACTIVECAPTION
COLOR_APPWORKSPACE
COLOR_BACKGROUND
COLOR_BTNFACE
COLOR_BTNSHADOW
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

  • LPCWSTR lpszMenuName: 指向以空字符结尾的字符串的指针,该字符串指定类菜单的资源名称,因为该名称出现在资源文件中。如果该成员是 NULL,则属于此类的窗口没有默认菜单。

  • LPCWSTR lpszClassName: 指向用于唯一标识此窗口类的空终止常量字符串的指针。这个类名将用于创建窗口实例。

  • HICON hIconSm:与窗口类关联的小图标的句柄。如果该成员是 NULL(或 nullptr),则系统在该成员指定的图标资源中搜索 hIcon 合适大小的图标作为小图标。
    注册窗口类后,可以创建操作系统窗口实例

更新于

请我喝[茶]~( ̄▽ ̄)~*

Natsuneko 微信支付

微信支付

Natsuneko 支付宝

支付宝

Natsuneko 贝宝

贝宝