在 Win32任务对话框中,标准按钮的文本“确定”、“取消”、“是”、“否”等会自动以系统语言显示。如果软件的语言与系统的语言不同,这可能是个问题。
例如,如果客户在英文 Windows 上安装我们软件的法文版本,任务对话框的内容将是法文的,但无论如何,任务对话框底部的标准按钮都是英文的。
有谁知道我该如何更改这些文本。
这个问题类似于处理属性表的这个 SO question 。
更新:
我尝试从中派生一个类CTaskDialog
并覆盖该OnInit()
方法以获取 CTaskDialogm_hWnd
并采用与前面提到的问题类似的方法,但不幸CTaskDialog::m_hWnd
的是它是私有的:
class CMyTaskDialog : public CTaskDialog
{
public:
CMyTaskDialog(_In_ const CString& strContent, _In_ const CString& strMainInstruction, _In_ const CString& strTitle,
_In_ int nCommonButtons = TDCBF_OK_BUTTON | TDCBF_CANCEL_BUTTON, _In_ int nTaskDialogOptions = TDF_ENABLE_HYPERLINKS | TDF_USE_COMMAND_LINKS,
_In_ const CString& strFooter = CString());
virtual HRESULT OnCreate();
};
CMyTaskDialog::CMyTaskDialog(_In_ const CString& strContent, _In_ const CString& strMainInstruction, _In_ const CString& strTitle,
_In_ int nCommonButtons, _In_ int nTaskDialogOptions,
_In_ const CString& strFooter) :
CTaskDialog(strContent, strMainInstruction, strTitle,nCommonButtons, nTaskDialogOptions, strFooter)
{
}
HRESULT CMyTaskDialog::OnCreate()
{
// tried to do stuff with m_hWnd, but m_hWnd is private :-(
return __super::OnCreate();
}
然而,这是一个非常糟糕的主意,它可以正确地完成,如下面我自己的答案所示。