[英]What does IDC_STATIC means in a resource.h file?
我有一个由 VS 2012 生成的简单 Win32 项目。在resource.h
文件中,我看到了这个:
#ifndef IDC_STATIC
#define IDC_STATIC -1
#endif
我发现它在resource.rc
文件中的几个地方被引用。 但我无法理解这意味着什么。 我也没有在网上找到有关它的参考。 有什么想法吗?
通过调用CreateWindowEx
创建子控件时,您必须分配一个控件 ID(通过重载的hMenu参数)。 以后可以使用控件 ID 来引用控件,而不必存储动态创建的HWND
(例如,在调用GetDlgItem
或GetDlgItemInt
)。
有些控件很少需要在代码中标识。 一个突出的例子是静态控件1 ,如果在资源脚本中定义,通常不需要在代码中引用。 您(或对话框管理器)在创建控件时仍需要传递控件 ID,即使您以后不使用它。 对于这些控件,您可以传递IDC_STATIC
控件 ID,该 ID 在向导生成的Resource.h
文件2 中定义。
1其他示例包括图标控件(具有SS_ICON
样式的静态控件)、 行控件(具有SS_ETCHEDHORZ
和SS_SUNKEN
样式的静态控件)或GroupBox 控件。
2这不是 Windows API 3的约定。 这严格是由用户代码做出的决定。 如果需要,您可以使用另一个 ID 值,或者根本不定义IDC_STATIC
,而在LTEXT 控制语句中使用整数文字: LTEXT "Filename", -1, 10, 10, 100, 100
3当然,SDK 头文件winres.h
确实将预处理器符号IDC_STATIC
定义为(-1)
,因此如果您在代码中定义它,请确保分配相同的值以避免任何混淆。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.