【问题标题】:meaning of #define in Windows resources source fileWindows资源源文件中#define的含义
【发布时间】:2016-03-15 11:40:00
【问题描述】:

我正在阅读关于在 vs 中使用 winapi for c++ 创建简单窗口的教程

在resource.h中我看到了

#define IDC_ERRORTEXT                   1001

然后在 resource.rc 中我看到了

EDITTEXT        IDC_ERRORTEXT, 4, 20, 176, 20, ES_MULTILINE |
ES_AUTOVSCROLL | ES_READONLY | NOT WS_BORDER | WS_VSCROLL

为什么IDC_ERRORTEXT定义使用1001?是随机数吗?还是这里定义了可能的字符数?

请注意,我试图将其更改为 10 - 它不起作用 然后我将其更改为 1005-它有效 然后我改成10000-又没用

我知道它是一个标识符,但是如果我在其中添加另一个 edittext 控件,我应该使用哪个标识符?

假设我要添加其他

#define IDC_ERRORTEXT2                   ?
 #define IDC_ERRORTEXT3                   ?
 #define IDC_ERRORTEXT4                   ?

我应该在那里使用哪些标识符?

【问题讨论】:

  • 数字1001对API有特殊的意义。由于它对人类读者具有意义,因此头文件为其赋予了一个符号名称(IDC_ERRORTEXT)。它不是一个随机的,而是一个非常特定的数字,带有一个“名称”以便于处理。
  • ID 表示标识符
  • 如果教程让您手动编码资源文件和这些值,那么它还应该告诉您这些值使用的范围。如果没有,请查找其他书籍或教程。
  • 1001 没有特殊含义,只是它是 1000 之后的下一个。这些数字通常由资源编辑器分配,它为您提供对话资源的所见即所得视图。该编辑器从 1000 开始分配控件 ID。编辑 resource.h 文件应该不是问题,并且没有明确的理由说明“它不起作用”,除了 VS 让你有点麻烦,它没有就像你两个都做。使用编辑器是避免麻烦的最简单方法。
  • 非常感谢您的 cmets

标签: c++ visual-studio winapi


【解决方案1】:

1001 常量是EDITTEXT 控件的标识符。

假设我要添加其他 (...) 我应该在那里使用哪些标识符?

您只需使用另一个唯一值,例如 1002、1003、1004。

【讨论】:

  • 非常感谢威尔克斯
  • 我想我可以简单地使用其他值(我尝试将其更改为 10 - 它不起作用然后我将其更改为 1005- 它起作用然后我再次更改为 10000-没用。我只是想知道给出数字的原则是什么。但正如你推荐的那样,1002、1003、1004 有效:)
  • 旁注:通常开发人员会使用内置的 Visual Studio 资源编辑器来添加/编辑他们的资源。它为您处理所有号码维护。
  • 资源标识符只需要在它们各自的范围内是唯一的。例如,您可以拥有具有相同位图 ID 值的字符串 ID。并且您可以重复使用控件 ID,只要它们没有相同的父级(或者与您的应用程序不相关,例如静态控件的 ID)。分配全局唯一值是安全的,但是当您开始用完 ID 时,您需要了解严格要求唯一性的地方。
猜你喜欢
  • 2011-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-04
  • 1970-01-01
  • 1970-01-01
  • 2014-08-26
相关资源
最近更新 更多