季版主,请指教...(非中文系统下显示中文界面)。

jbz 2003-02-11 05:42:23
季版主,感谢您在这个帖子里的指点,
http://expert.csdn.net/Expert/topic/1327/1327619.xml
我已经解决了大部分的界面乱码问题(非中文系统下显示中文界面)。

但还有一些没有解决,比如:

1)TPageControl 的中文标签
2)TListBox 里的内容
3)TForm 的标题
4)Tmenu的菜单内容
5)TOpenDialog的Filter

你说过:

“对于那些仍然不能被正确显示的文字,一个办法就是将那些文字以资源(STRING
类型)的方法存放,然后在程序中动态添加这些存放在资源中的文字就可以了。”

请您详细说明一下,怎么使用资源解决上述乱码问题。
另外,关于自画菜单能否给些演示代码?

非常感谢!
...全文
72 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
jbz 2003-02-18
  • 打赏
  • 举报
回复
结贴。
jbz 2003-02-17
  • 打赏
  • 举报
回复
#define Reconst_CaptionStr System::LoadResourceString(_CaptionStr)

这一行在编译时出错:

[C++ Error] Romain.cpp(40): E2034 Cannot convert 'int' to 'const ResourceString *'
[C++ Error] Romain.cpp(40): E2342 Type mismatch in parameter 'rsrc' (wanted 'const ResourceString * const', got 'int')

我查LoadResourceString函数的帮助也找不到。
cscer 2003-02-17
  • 打赏
  • 举报
回复
学习……

感谢!
jbz 2003-02-17
  • 打赏
  • 举报
回复
感激得我无话可说,先把这个帖子结了,再另外酬谢。
jbz 2003-02-17
  • 打赏
  • 举报
回复
改成LoadStr通过了,但是发现下面设置语言的代码不起作用:

LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
#pragma code_page(936)

和原来的结果一样,有些汉字还是不能正常显示(比如“确”字)。

看来不能追求完美了,开始研究多语言界面。不能显示中文的就用ENGLISH...
jishiping 2003-02-17
  • 打赏
  • 举报
回复
将LoadResourceString改成LoadStr就可以了。
jishiping 2003-02-15
  • 打赏
  • 举报
回复
1)对于PAS文件,BCB就是这样子的。“每次编译都要重新生成ReConst.hpp
文件!所有包含它的文件也都要随之编译”,这个问题可以这样解决。将文
件ReConst.hpp改名为ReConst.h,然后其它文件包含ReConst.h,而不要使用
ReConst.hpp,这样最多只有ReConst.pas每次重新编译。当然,一旦你修改了
ReConst.pas文件,就需要将新的ReConst.hpp改名为ReConst.h。

3)对于使用pas文件产生的资源,我也不知道如何设定语言。这样吧,你用
RC格式的资源文件,就可以设定语言了。下面是Reconst.rc的内容:
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
#pragma code_page(936)

#include "Reconst.h"

STRINGTABLE
{
_OKStr, "确定"
_CancelStr, "取消"
_CaptionStr, "窗口1标题"
}

下面是Reconst.h的内容:
#define _OKStr 0xFF00
#define _CancelStr 0xFF01
#define _CaptionStr 0xFF02

#define Reconst_OKStr System::LoadResourceString(_MoveOK)
#define Reconst_CancelStr System::LoadResourceString(_CancelStr)
#define Reconst_CaptionStr System::LoadResourceString(_CaptionStr)

4)在主窗口的构造函数里写代码设定:
void SetAppShowHint(bool ShowHint)
{
THintWindow* HintWin;

Application->ShowHint = ShowHint;
for(int n=0; n<Application->ComponentCount;
n++) {
HintWin = dynamic_cast<THintWindow*>(
Application->Components[n]);
if (HintWin != NULL) {
HintWin->Canvas->Font->Charset =
GB2312_CHARSET;
break;
}
}
}

__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
SetAppShowHint(true);
}

5)在你看到的那个帖子里,我已经说了。不要使用TRadioGroup自动生成
TRadioButton。自已拖放TRadioButton在TForm上。
TCheckBox和TRadioButton拆成2个控件(Box的大小只包含那个方框或者圆
圈,右边放一个TLabel,设置TLabel的属性FocusControl,然后在TLabel的
事件OnClick里设置TCheckBox和TRadioButton的Checked属性值)。下面是
TCheckBox和TRadioButton右边放置的TLabel的OnClick事件的函数代码:
void __fastcall TForm1::BoxLabelClick(TObject *Sender)
{
TLabel* Label;
TCheckBox* ChkBox;
TRadioButton* RdoBtn;

Label = dynamic_cast<TLabel*>(Sender);
if (Label==0 || !Label->FocusControl)
return;
ChkBox = dynamic_cast<TCheckBox*>(
Label->FocusControl);
RdoBtn = dynamic_cast<TRadioButton*>(
Label->FocusControl);
if (ChkBox!=0 && ChkBox->Enabled) {
ChkBox->Checked =
!ChkBox->Checked;
if (ChkBox->OnClick != 0)
ChkBox->OnClick(ChkBox);
}
else if(RdoBtn && RdoBtn->Enabled
&& !RdoBtn->Checked) {
RdoBtn->Checked = true;
if (RdoBtn->OnClick != 0)
RdoBtn->OnClick(RdoBtn);
}
}
jbz 2003-02-13
  • 打赏
  • 举报
回复
非常感谢季版主的热心帮忙,经过实践学习,已经解决了大部分问题。

现在我把测试过程中遇到的问题反馈一下,请季版主及各位同道再指点一下。

1)非常奇怪的现象:加入ReConst.pas后,每次编译成功后,内容没有变,再点击编译,它就又来一遍,每次编译都要重新生成ReConst.hpp文件!所有包含它的文件也都要随之编译,非常费时,不应该这样呀,我在资源管理器里发现,ReConst.pas的日期是昨天的,而ReConst.hpp日期则是现在(原来不是的,工程没有变动就不应该再编译的。)

2)我给PopupMenu1指定了ImageList1,在菜单项前面有图标,(设置了ImageIndex)请问:我如何在自画菜单时让图标也显示出来?

3)使用资源显示Form的标题已经成功了80%,大部分汉字可以显示,但有些显示的是“?”(例如“确定”的“确”字),同样的字在自画菜单里没有问题,说明资源ReConst.pas里的汉字不是GB2312_CHARSET?但这样在ReConst.pas中设置呢?

4)各控件的提示信息Hint,是不是也必须使用资源?如果是就比较麻烦了,因为太多了。

5)TRadioGroup的内容如何处理?
jbz 2003-02-13
  • 打赏
  • 举报
回复
第2个问题我已经解决,在MenuDrawItem事件中加入下面代码就可以了。

int k=Item->ImageIndex;
if(k>=0)ImageList1->Draw(ACanvas,ARect.Left,ARect.Top+2,k,true);

其他几个问题请继续讨论。
jbz 2003-02-13
  • 打赏
  • 举报
回复
up
cscer 2003-02-12
  • 打赏
  • 举报
回复
感谢!

学习……
LiYaohui 2003-02-12
  • 打赏
  • 举报
回复
学习ing...
zzddqq 2003-02-12
  • 打赏
  • 举报
回复
太历害了,学习!
45867371 2003-02-12
  • 打赏
  • 举报
回复
佩!!!!!!!!!!!!!!!服!!!!!!!!!!!!!!!
Lonemoon 2003-02-12
  • 打赏
  • 举报
回复
mark
痞子酷 2003-02-12
  • 打赏
  • 举报
回复
极大侠水平极高!!!!!!!!!
佩服!!!!!!!!!!!
hdaq 2003-02-12
  • 打赏
  • 举报
回复
学习
tccsdn 2003-02-12
  • 打赏
  • 举报
回复
先学习
Behard 2003-02-12
  • 打赏
  • 举报
回复
听课
kingfish 2003-02-12
  • 打赏
  • 举报
回复
学习!
加载更多回复(11)

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧