В Win32 Task Dialog тексты стандартных кнопок «ОК», «Отмена», «Да», «Нет» и т. Д. Автоматически отображаются на языке системы. Это может быть проблемой, если язык Программного обеспечения отличается от языка системы.
Например, если клиент устанавливает французскую версию нашего программного обеспечения в английской Windows, содержимое диалога задач будет на французском языке, но стандартные кнопки в нижней части диалога задач будут на английском языке, несмотря ни на что.
Кто-нибудь знает, как я могу изменить эти тексты.
Этот вопрос похож на этот вопрос SO , касающийся листов свойств.
UPDATE:
Я попытался извлечь класс из CTaskDialog
и переопределить метод OnInit()
в oder, чтобы получить m_hWnd
у CTaskDialog и использовать тот же подход, что и в предыдущем вопросе, но, к сожалению, 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();
}
Однако это очень плохая идея, ее можно сделать правильно, как показано в моем собственном ответе ниже.