BCB如何加载字符串资源文件(语言资源文件)?

         如何在软件.exe中嵌入语言资源呢。常规的想法是, 将语言字符串放到一个文件中, 然后在程序中去读取。 然而这样做存在一个问题: 最后发布的.exe必须依赖于语言字符串文件, 比如lang.txt.   于是, 我们想, 能不能把这些字符串通过某种方式嵌入到.exe中呢? 这样, 在发布程序的时候, 就不用管语言资源了。

        当然可以, 且看步骤:

1.  建立一个C++ Builder工程, 顺便画出控件布局。

2. 在当前目录下添加资源文件lang_ch.rc和lang_en.rc, 并且要添加到工程中, 便于编译生成应用程序需要的lang_ch.res和lang_en.res.   发布.exe程序的时候, 不需要发布lang_ch.res和lang_en.res, 因为他们已经内嵌在.exe中。

3. 写如下代码, 然后编译连接, 运行。

      

       代码如下:

 

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    Label1->Caption = LoadStr(1);  // LoadStr是系统库函数, 此时, 从嵌入.exe中的lang_ch.res中读取字符串
    Label2->Caption = LoadStr(2);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
    Label1->Caption = LoadStr(101); 
    Label2->Caption = LoadStr(102);
}
//---------------------------------------------------------------------------


     资源文件lang_ch.rc和lang_en.rc如下:

 

 

STRINGTABLE
BEGIN
1 "姓名:"
2 "学号:"
END

 

STRINGTABLE
BEGIN
101 "Name:"
102 "ID:"
END

 

 

      编译连接运行后, 程序可实现双语切换:


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值