我必须在MFC应用程序中显示/启用一堆对话框项。它们都有IDC_EDIT_CHANNEL1_x
这样的名称,其中x是从0到15的int值。资源文件中的ID没有排序,所以我想通过该字符串获取项目。
是否可以从字符串IDC_EDIT_CHANNEL1_1
获取名为"IDC_EDIT_CHANNEL1_1"
的resourceId?
众所周知,GetDlgItem()仅适用于int值。
答案 0 :(得分:1)
您没有看到的问题是预编译器在编译时用整数替换IDC_EDIT_CHANNEL1_x
。这是一个宏,而不是一个字符串。
因此,您的应用程序永远不会“看到”字符串。在源代码到达编译器之前,字符串已由预处理器替换。
我的建议是使用连续的ID。我不知道你为什么不想这样做,但它可能是解决你问题的最快捷,最直接的方式。
另一种方法是根本不使用宏。资源编辑器可以使用字符串,如果预处理器没有用int替换它们,那就是将要使用的字符串。您可以按字符串过滤它们。