在搜索 Win32 API 代码示例时,我看到许多常量值的示例,其名称如资源脚本、resource.h 文件中的“IDC_OUTPUT”或在应用程序顶部定义,通常用于标识对话框控件或子窗口等等。但是,该常数计算得出的值变化很大。 例如,我看到诸如 101、1001、1003、1101、2015,甚至 40003 之类的值。
我想这只是一个代表任意值的名称。 但为什么是“IDC_OUTPUT”呢? 这个名字从何而来? 这个名字有什么特殊的含义吗? 是否有理由认为该名称优于其他名称(例如“FOO_BAR”)? 例如,是否有任何充分的理由让我选择名称 IDC_OUTPUT 而不是我在以下代码片段中选择的名称?
#define FOO_BAR 1001
CreateWindowEx
(
WS_EX_WINDOWEDGE,
"SomeWindow",
"SomeWindow",
WS_CHILD|WS_VISIBLE|WS_SIZEBOX|WS_BORDER|WS_CAPTION,
10,10,200,200,
hWnd,
(HMENU)FOO_BAR, // instead of "IDC_OUTPUT"
(HINSTANCE)GetWindowLongPtr(hWnd,0),
0
);
我想选择名称 IDC_OUTPUT 有什么充分的理由吗?
是的。它遵循通用约定,使得更容易理解任何给定的代码片段。没有技术原因选择
IDC_OUTPUT
而不是 FOO_BAR
;任何一个都可以正常工作(就像任何 16 位无符号数值一样)。
这里的约定与资源有关。资源通常由 ID(一个 16 位无符号值)来标识。这就是为什么所有这些常量都以
ID
开头。
下一个字符标识资源类型。这些是常见的:
C
:控制B
:位图(或一般图像)D
:对话框S
:弦乐该类型后跟一个下划线 (
_
),以在视觉上将其与其余部分分开,客户端使用其余部分来描述该项目。因此,IDC_OUTPUT
是程序用于某种输出的控件的 ID。
按照惯例,从 100 开始分配控制 ID(因为小数字已经被占用了)。有关详细信息,请参阅为什么对话框编辑器开始分配控件 ID 为 100?。