gpt4 book ai didi

c++ - 在 Windows 任务对话框中替换文本 “OK”、 “Cancel”、 “Yes”、 “No”

转载 作者:可可西里 更新时间:2023-11-01 10:02:45 26 4
gpt4 key购买 nike

在 Win32 上 Task Dialog标准按钮的文本“确定”、“取消”、"is"、“否”等会自动以系统语言显示。如果软件的语言与系统的语言不同,这可能会成为问题。

例如,如果客户在英文 Windows 上安装我们软件的法文版本,任务对话框的内容将是法文,但任务对话框底部的标准按钮无论如何都是英文的。

有谁知道我该如何更改这些文本。

这个问题类似于this SO question这是处理属性表。

更新:

我尝试从 CTaskDialog 派生一个类并覆盖 OnInit() 方法以获取 CTaskDialog 的 m_hWnd 并采用类似的方法比前面提到的问题要多,但不幸的是 CTaskDialog::m_hWnd 是私有(private)的:

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();
}

然而,这是一个非常糟糕的主意,它可以正确地完成,如下面我自己的回答所示。

最佳答案

其实很简单:

不是使用标准按钮 TDCBF_YES_BUTTONTDCBF_NO_BUTTONTDCBF_CANCEL_BUTTON 等,您需要使用非这些按钮,而是添加您自己的按钮使用 AddCommandControl,并在 nTaskDialogOptions 参数中创建带有 0 的 CTaskDialog 对象,从而禁用 TDF_USE_COMMAND_LINKS 模式。然后这些按钮将不会显示为命令链接,而是显示为简单按钮。

最小的例子:

  CTaskDialog taskDialog(L"", L"Voulez-vous enregistrer les modifications?",
L"Some title", 0, 0);

taskDialog.AddCommandControl(100, L"Oui");
taskDialog.AddCommandControl(102, L"Non");
taskDialog.SetDefaultCommandControl(100);
INT_PTR x = taskDialog.DoModal();
...

enter image description here

但是有一个问题:在同一个任务对话框中不能有按钮命令链接。但这个问题是一个小问题(至少对我而言),因为在同一个任务对话框中具有命令链接 按钮的 IMO 可能无论如何都不是最好的主意。

关于c++ - 在 Windows 任务对话框中替换文本 “OK”、 “Cancel”、 “Yes”、 “No”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50150814/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com