!!! 如何创建本地化语言的按钮 !!!

symansoft 2003-01-10 02:28:19

安装及使用ACDSee5.0英文版时,我注意到它的对话框或向导中的按钮如"确定"、"取消"、"下一步"等中文显示,为什么没显示"Ok","Cancel","Next"等英文?怎样实现这种按钮?如能我们程序中的标准按钮象这样根据操作系统的语言环境显示相应的语言提示,那么国际化你的软件时岂不是省了很多事?
请高手赐教。
...全文
54 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
idilent 2003-01-17
  • 打赏
  • 举报
回复
我觉得你在程序中如果全部使用api的话就可以达到这个目的,但是这样的话,生产效率会很低,得不偿失,再说如果使用软件的人连基本的英语都不懂,情况不是大好就是大坏。
馮強 2003-01-17
  • 打赏
  • 举报
回复
自定义Form保存成函数,自己用还是比较方便的。
jishiping 2003-01-16
  • 打赏
  • 举报
回复
函数已经提供了,你还要怎么样啊。
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ShowMessage(GetNextStepStr());
Button2->Caption = GetNextStepStr();
}
symansoft 2003-01-16
  • 打赏
  • 举报
回复

世平兄,帮人帮到底,送佛送到西,不如给出一个Form的例子,将上述函数应用一下,如何?当然仅须说明制作方法罢了,不必给出详细内容。
jishiping 2003-01-14
  • 打赏
  • 举报
回复
下面是BCB的代码。

static char StepStr[64]="";
BOOL DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam,
LPARAM lParam)
{
if (uMsg==WM_INITDIALOG) {
GetWindowText(GetDlgItem(hDlg,
12324), StepStr, 64);
EndDialog(hDlg, 0);
}
return 0;
}

AnsiString GetNextStepStr()
{
HINSTANCE hInst;

if (StepStr[0]) return StepStr;

hInst = LoadLibrary("comctl32.dll");
DialogBoxParam(hInst, LPCSTR(1020),
NULL, (FARPROC)DlgProc, 0);
FreeLibrary(hInst); return StepStr;
}
symansoft 2003-01-14
  • 打赏
  • 举报
回复

世平兄不如将你的BCB代码贴出来更好。
symansoft 2003-01-14
  • 打赏
  • 举报
回复

世平兄的BCB太对我的路子了,其实我也是用BCB的,考虑到Delphi更普遍,高手更多,才在这里提问的。
还有哪位有高见?
symansoft 2003-01-13
  • 打赏
  • 举报
回复

我关心的倒不是向导的"下一步"按钮,而是软件内部的"Ok","Cancel"等按钮如何自己适应相应的语言环境,messagebox肯定不行,因为我们常常要自定义对话框。望各位多发表意见,谢谢。
世平兄谈得有点意思,望进一步谈谈。
jishiping 2003-01-13
  • 打赏
  • 举报
回复
说明,上面的代码是模拟弹出一个对话框,comctl32.dll 里面的ID=1020的
对话框就是向导窗口的对话框,里面有几个按钮,其中对话框里ID=12324的
控件就是“下一步”这个按钮。函数的目的就是取得这个按钮的文字并返回
这个文字。
jishiping 2003-01-13
  • 打赏
  • 举报
回复
首先声明,我是用BCB的,Delphi的语法不熟,如有错误,自己修改一下。

function GetNextStepStr: string;
var
hInst: HINSTANCE;
Buffer: array[0..64] of Char;

function DlgProc(hDlg:HWND, uMsg:UINT, wParam:WPARAM,
lParam:LPARAM): BOOL;
begin
if uMsg=WM_INITDIALOG then
begin
GetWindowText(GetDlgItem(hDlg,
12324), Buffer, 64);
EndDialog(hDlg, 0);
end;
Result := 0;
end;

begin
hInst := LoadLibrary('comctl32.dll');
DialogBoxParam(hInst, LPCSTR(1020), Nil, @DlgProc, 0);
FreeLibrary(hInst); Result := Buffer;
end;
jishiping 2003-01-11
  • 打赏
  • 举报
回复
使用API就可以实现向导了,这样的话,那些按钮就是Windows自身的,从而就和Windows的语言一样了。但是Delphi和C++Builder都没有对API的向导打包。
bigcotton 2003-01-11
  • 打赏
  • 举报
回复
还少一个“下一步”
gzllich 2003-01-11
  • 打赏
  • 举报
回复
强烈关注
killlaoli 2003-01-10
  • 打赏
  • 举报
回复
用messagebox好象就行。
Application.MessageBox('this is only a test', 'test', MB_OK);
在中文系统下,按钮显示的就是确定,英文下好象就是ok

1,184

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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