Использование TaskDialogConfig с std::string
Я пытаюсь создать диалог задач, используя TASKDIALOGCONFIG
strucutre. Мое приложение использует 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);
Я немного исследовал проблему, но пока не нашел решения. Кто-нибудь может мне помочь?
1 ответ
Решение
У вас есть два варианта:
- Используйте текст ANSI. Сделать это с помощью
TASKDIALOGCONFIGA
а такжеTaskDialogIndirectA
, - Используйте текст Unicode. Переключите ваши строки из
std::string
вstd::wstring
,
Я лично рекомендовал бы последний вариант.
Я бы также рекомендовал вам не использовать tchar.h
и прекратить использование _T(...)
, Так как вы ориентируетесь только на Unicode, вы должны написать L"Error"
скорее, чем _T("Error")
, Это имеет смысл использовать tchar.h
если вы пишете код, который должен компилироваться для целей MBCS и Unicode. Это было неизбежное зло во времена, когда нам нужно было скомпилировать для Win 95/98 и Win NT/2000. Но эти дни давно прошли.