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的成员函数来加载资源字符串。


 

 

 

 

 

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值