可以通过字符串获取对话框项目

时间:2014-04-09 08:01:04

标签: c++ mfc

我必须在MFC应用程序中显示/启用一堆对话框项。它们都有IDC_EDIT_CHANNEL1_x这样的名称,其中x是从0到15的int值。资源文件中的ID没有排序,所以我想通过该字符串获取项目。

是否可以从字符串IDC_EDIT_CHANNEL1_1获取名为"IDC_EDIT_CHANNEL1_1"的resourceId?

众所周知,GetDlgItem()仅适用于int值。

1 个答案:

答案 0 :(得分:1)

您没有看到的问题是预编译器在编译时用整数替换IDC_EDIT_CHANNEL1_x。这是一个宏,而不是一个字符串。

因此,您的应用程序永远不会“看到”字符串。在源代码到达编译器之前,字符串已由预处理器替换。

我的建议是使用连续的ID。我不知道你为什么不想这样做,但它可能是解决你问题的最快捷,最直接的方式。

另一种方法是根本不使用宏。资源编辑器可以使用字符串,如果预处理器没有用int替换它们,那就是将要使用的字符串。您可以按字符串过滤它们。