【发布时间】:2020-06-01 20:18:55
【问题描述】:
我在我的 Win32 应用程序中有一个这样定义的字符串表:
STRINGTABLE
BEGIN
IDS_STRING101 "myString1"
IDS_STRING102 "myString2"
IDS_STRING103 "myString3"
END
由于我希望所有这些字符串都成为数组的一部分,是否可以遍历该表?由于LoadStringA() 需要宏IDS_STRING101 等,因此似乎无法遍历它。
举一个实际的例子,我如何以编程方式将这些字符串移动到字符串数组(C 中的char* 数组,C++ 中的std::string 数组)而不使用明显的方式来编写LoadStringA() 的长重复代码调用第二个参数IDS_STRINGXXX?如果可能的话,我希望将来能够在不修改代码中的任何内容的情况下向该表中添加更多字符串。
【问题讨论】:
-
不确定,您真正想要在这里完成什么。但是没有什么能阻止您在 resource.h 文件中定义符号常量,例如
IDS_STRING_FIRST和IDS_STRING_LAST。 -
@RemyLebeau 我正在考虑为
LoadString()创建一个循环,但是我应该如何知道要在循环中读取哪个字符串?是否可以遍历常量? (根据我的阅读,我必须将IDS_STRINGXXX传递给LoadString()) -
LoadString需要一个数值。将1添加到数字是微不足道的。 -
@edw 这不是假设。这是一个要求。可以轻松安排的要求。
-
@EdwardKarak ...如果想加载不连续的字符串,可以将循环替换为
for(UINT id : {IDS_STRING101,IDS_STRING102,IDS_STRING103}) { LoadString(...,id,...); }