【问题标题】:Replacing texts "OK", "Cancel", "Apply" and "Help" in Win32 property sheets替换 Win32 属性表中的文本“OK”、“Cancel”、“Apply”和“Help”
【发布时间】:2013-03-14 14:44:42
【问题描述】:

在 Win32 属性表上,文本“OK”、“Cancel”、“Apply”和“Help”会自动以系统语言显示。如果软件的语言与系统的语言不同,这可能是个问题。

例如,如果客户在英文 Windows 上安装我们软件的法文版本,则属性表的内容将为法文,但属性表底部的标准按钮无论如何都是英文的。

有谁知道我怎样才能更改这些文本。

【问题讨论】:

  • 你可以change the process's UI language 但我想这只有在你安装了相应的语言包的情况下才有效。语言包仅在更昂贵的 SKU(如 Windows 7 Ultimate 和 Enterprise)上受支持。
  • 这不是一个可行的解决方案。
  • This answer 更改应用按钮上的文本。 OK 和 Cancel 按钮的控件 ID 是 IDOK 和 IDCANCEL(请参阅MessageBox)。还有一个 IDHELP(值 9)可能对应于帮助按钮,但我没有尝试过。我猜这在 Windows 版本中是一致的,但实际上并没有记录。

标签: winapi mfc


【解决方案1】:

实际上更改这些文本非常简单。唯一必须做的就是从 CPropertySheet 派生一个类,重写 OnInitDialog 方法并更改重写的 OnInitDialog 中的文本。

class CMyPropertySheet : public CPropertySheet
{
public :
  CMyPropertySheet() ;

protected:
  virtual BOOL OnInitDialog();

  DECLARE_MESSAGE_MAP()
} ;

BOOL CMyPropertySheet::OnInitDialog()
{
  ...
  SetDlgItemText(IDOK, whatever..) ;
  SetDlgItemText(0x3021, whatever..) ;   // 0x3021 == IDAPPLY
  SetDlgItemText(IDCANCEL, whatever...) ;
  SetDlgItemText(IDHELP, whatever...) ;
}

【讨论】:

  • 确认 0x3021 在我的 WinXp 机器上也被识别为 IDAPPLY。所有按钮都相对于应用按钮对齐;因此破坏它会导致所有按钮水平错位。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-01
  • 2011-12-16
  • 2014-11-06
  • 2016-05-30
  • 2018-04-16
  • 2015-03-04
  • 1970-01-01
相关资源
最近更新 更多