0

構造体を使用して、タスク ダイアログを作成しようとしていますTASKDIALOGCONFIG。私のアプリケーションは Unicode を使用しています。これは私のコードです:

string error_text = get_error_text();
string error_code = get_error_code();

TASKDIALOGCONFIG tdc = { sizeof(TASKDIALOGCONFIG) };
tdc.dwCommonButtons = TDCBF_OK_BUTTON;
tdc.pszMainIcon = TD_ERROR_ICON;
tdc.pszWindowTitle = _T("Error");
tdc.pszContent = error_text.c_str(); /* of course this will give a 
                                        const char* instead of a wchar_t* */
tdc.pszExpandedInformation = error_code.c_str(); // here is the same thing
tdc.hwndParent = m_wndParent;

TaskDialogIndirect(&tdc, NULL, NULL, NULL);

問題を少し調べましたが、まだ解決策が見つかりません。誰でも私を助けることができますか?

4

1 に答える 1

2

次の 2 つのオプションがあります。

  1. ANSI テキストを使用します。とを使用してこれをTASKDIALOGCONFIGA行いTaskDialogIndirectAます。
  2. Unicode テキストを使用します。弦を からstd::stringに切り替えますstd::wstring

個人的には後者のオプションをお勧めします。

また、を使用しないことtchar.h、および使用を中止することをお勧めします_T(...)。Unicode のみを対象としているためL"Error"_T("Error"). tchar.hMBCS と Unicode の両方のターゲットに対してコンパイルする必要があるコードを記述している場合にのみ、使用する意味があります。Win 95/98 と Win NT/2000 用にコンパイルする必要があった時代には、これは必要悪でした。しかし、そんな日々はとうの昔に過ぎ去りました。

于 2014-01-22T20:22:58.523 に答える