在此站点和其他地方找到的许多 Win32 API 代码示例中,都会出现“IDC_OUTPUT”等常量。这些定义从何而来?

问题描述 投票:0回答:1

在搜索 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
   );
winapi win32gui
1个回答
0
投票

我想选择名称 IDC_OUTPUT 有什么充分的理由吗?

是的。它遵循通用约定,使得更容易理解任何给定的代码片段。没有技术原因选择

IDC_OUTPUT
而不是
FOO_BAR
;任何一个都可以正常工作(就像任何 16 位无符号数值一样)。

这里的约定与资源有关。资源通常由 ID(一个 16 位无符号值)来标识。这就是为什么所有这些常量都以

ID
开头。

下一个字符标识资源类型。这些是常见的:

  • C
    :控制
  • B
    :位图(或一般图像)
  • D
    :对话框
  • S
    :弦乐

该类型后跟一个下划线 (

_
),以在视觉上将其与其余部分分开,客户端使用其余部分来描述该项目。因此,
IDC_OUTPUT
是程序用于某种输出的控件的 ID。

按照惯例,从 100 开始分配控制 ID(因为小数字已经被占用了)。有关详细信息,请参阅为什么对话框编辑器开始分配控件 ID 为 100?

© www.soinside.com 2019 - 2024. All rights reserved.