LoadString的使用

 

LoadString的使用

<script>function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</script>

    如果程序中涉及到多国语言,那么当在屏幕上写字的时候,我们就不能再用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的成员函数来加载资源字符串。


 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值