windows – 在resource.h文件中IDC_STATIC的含义是什么?

我有一个由VS 2012生成的简单Win32项目.在resource.h文件中,我看到了:

#ifndef IDC_STATIC
#define IDC_STATIC              -1
#endif

我发现它在resource.rc文件中的几个地方被引用.但我无法理解这意味着什么.我也没有在网上找到它的参考.任何的想法?

最佳答案 通过调用
CreateWindowEx创建子控件时,必须分配控件ID(通过重载的hMenu参数).稍后可以使用控制ID来引用控件,而不必存储动态创建的HWND(例如,当调用
GetDlgItem
GetDlgItemInt时).

很少需要在代码中识别某些控件.一个突出的例子是Static Control1,如果在资源脚本中定义,通常不需要在代码中引用.您(或对话框管理器)在创建控件时仍需要传递控件ID,即使您稍后不使用它.对于这些控件,您可以传递IDC_STATIC控件ID,该控件ID在向导生成的Resource.h文件2中定义.

1其他示例包括Icon Control(具有SS_ICON样式的静态控件),Line Control(具有SS_ETCHEDHORZ和SS_SUNKEN样式的静态控件)或GroupBox Control.

2这不是Windows API3的约定.它严格地由用户代码决定.如果需要,您可以使用另一个ID值,或者根本不定义IDC_STATIC,而是使用LTEXT control statement中的整数文字:LTEXT“Filename”,-1,10,10,100,100

3当然,SDK头文件winres.h确实将预处理器符号IDC_STATIC定义为(-1),因此如果您在代码中定义它,请确保分配相同的值以避免混淆.

点赞