现在的位置: 首页 > 综合 > 正文

LoadString的使用

2013年08月09日 ⁄ 综合 ⁄ 共 1338字 ⁄ 字号 评论关闭
 

LoadString的使用



    如果程序中涉及到多国语言,那么当在屏幕上写字的时候,我们就不能再用DrawTexthdc, L"Test",...)的方式了,而应该用LoadString函数从资源加载字符串资源,这样在换语言的时候只需要替换字符串资源就行了, 而无需改动代码。

以下是LoadString函数的原型:

int LoadString(

  HINSTANCE hInstance,

  UINT uID,

  LPTSTR lpBuffer,

  int cchBufferMax

);

参数解释:

hInstance:
资源所在的实例句柄。

nID:字符串资源的ID号。

lpBuffer:用来存放字符串的缓冲区。

cchBufferMax缓冲区的大小。如果cchBufferMax大于字符串的长度,那么字符串将会被截断,并以/0结束;如果字符串的长度大于等于cchBufferMax那么程序将会因为缓冲区溢出而崩溃。

例如下面的代码:(IDS_STR_TEST = L "测试中"



这段程序将会因为缓冲区溢出而崩溃。

      LoadString还有一种用法,无需传入buffer,而直接将lpBuffer设为NULL,然后将返回值强制转换为LPWSTR,得到指向资源文件的指针,由于是直接指向资源文件,所以这个时候得到的字符串是只读的。

用法如下:IDS_STR_TEST = L "测试中"



不过在这么使用之前我们必须为资源编译器加上-n标志,以确保所得到的字符串是以“/0”为结束符的。在vs2005中的设置如下图:

 

Vs2005中给资源编译器加上-n标志

 

 

实际上CString已近为我们封装好了LoadString函数,我们也可以直接调用CString的成员函数来加载资源字符串。


 

抱歉!评论已关闭.