我有一个由VS 2012生成的简单Win32项目。在resource.h文件中,我看到了以下内容:
#ifndef IDC_STATIC
#define IDC_STATIC -1
#endif
Run Code Online (Sandbox Code Playgroud)
我发现在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),因此,如果您在代码中定义了它,请确保分配相同的值以避免任何混淆。
| 归档时间: |
|
| 查看次数: |
1650 次 |
| 最近记录: |