【发布时间】:2011-08-29 19:53:32
【问题描述】:
好的,所以我最近决定将我应用程序中的每个字符串都放入一个 STRINGTABLE 中,这样我就可以轻松地翻译成不同的语言。 我知道如何使用 LoadString() api,但这涉及到我为要加载的每个字符串都有一个不同的变量,如果我的应用程序有 100 个字符串,那就是很多变量。这是最好的方法吗?或者我应该创建一个全局变量,用作缓冲区以根据需要加载字符串?另外,由于无法知道我的字符串有多大,我应该创建一个足够大的缓冲区来保存我可能拥有的任何字符串,还是有更好的方法来做到这一点?
根据需要加载字符串也会对性能不利吗?有什么办法可以预加载吗?
RE:好的,我已经尝试创建一个大小为 256 字节的缓冲区并根据需要将字符串加载到其中,尽管我遇到了一个小问题......
这是我显示错误消息的代码,错误是“分配内存错误!”
LoadString(g_hInst, IDS_ERROR_MEMORY, szBuffer, sizeof(szBuffer)/sizeof(TCHAR));
MessageBox(NULL, szBuffer, TEXT("错误"), MB_OK | MB_ICONERROR);
ExitProcess(1);
我将缓冲区作为全局变量:TCHAR szBuffer[256];
这可行,但是,我想将“错误”文本也存储到字符串表中,并在我想显示错误时加载它,问题是这需要我有 2 个全局变量来加载字符串,并且有些地方我需要一次加载更多。
有比拥有多个全局变量更好的解决方案吗?
【问题讨论】:
-
使用支持本地化的GUI框架会容易得多
标签: c string winapi api resources