好的,最近我决定把应用程序中的每个字符串都放入STRINGTABLE中,以便轻松地翻译成不同的语言。我知道如何使用LoadString() api,但这意味着我需要为要加载的每个字符串创建一个不同的变量,如果我的应用程序有100个字符串,那就需要很多变量。这是最好的方法吗?还是应该创建一个全局变量作为缓冲区来根据需要加载字符串?此外,由于不知道我的字符串有多大,所以是否应该创建足以容纳任何可能存在的字符串的足够大的缓冲区,或者是否有更好的方法做到这一点?
另外,按需加载字符串对性能有影响吗?有没有办法预加载它们?
更新:好的,我尝试创建大小为256个字节的缓冲区,并根据需要将字符串加载到其中,但遇到了一些问题...
以下是显示错误消息的代码,错误是“分配内存时出错!”
LoadString(g_hInst, IDS_ERROR_MEMORY, szBuffer, sizeof(szBuffer)/sizeof(TCHAR)); MessageBox(NULL, szBuffer, TEXT("Error"), MB_OK | MB_ICONERROR); ExitProcess(1);
而我将我的缓冲区作为全局变量: TCHAR szBuffer[256];
这可以工作,但是,我想在字符串表中也存储“Error”文本,并在显示错误时加载该文本,问题是这将要求我有两个全局变量来加载字符串,而有些地方需要一次加载甚至更多。有没有比拥有多个全局变量更好的解决方案?
另外,按需加载字符串对性能有影响吗?有没有办法预加载它们?
更新:好的,我尝试创建大小为256个字节的缓冲区,并根据需要将字符串加载到其中,但遇到了一些问题...
以下是显示错误消息的代码,错误是“分配内存时出错!”
LoadString(g_hInst, IDS_ERROR_MEMORY, szBuffer, sizeof(szBuffer)/sizeof(TCHAR)); MessageBox(NULL, szBuffer, TEXT("Error"), MB_OK | MB_ICONERROR); ExitProcess(1);
而我将我的缓冲区作为全局变量: TCHAR szBuffer[256];
这可以工作,但是,我想在字符串表中也存储“Error”文本,并在显示错误时加载该文本,问题是这将要求我有两个全局变量来加载字符串,而有些地方需要一次加载甚至更多。有没有比拥有多个全局变量更好的解决方案?