替换 Win32 属性表中的文本“OK”、“Cancel”、“Apply”和“Help”
Posted
技术标签:
【中文标题】替换 Win32 属性表中的文本“OK”、“Cancel”、“Apply”和“Help”【英文标题】:Replacing texts "OK", "Cancel", "Apply" and "Help" in Win32 property sheets 【发布时间】: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 版本中是一致的,但实际上并没有记录。 【参考方案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。所有按钮都相对于应用按钮对齐;因此破坏它会导致所有按钮水平错位。以上是关于替换 Win32 属性表中的文本“OK”、“Cancel”、“Apply”和“Help”的主要内容,如果未能解决你的问题,请参考以下文章