Использование 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);

Я немного исследовал проблему, но пока не нашел решения. Кто-нибудь может мне помочь?

0

Решение

У вас есть два варианта:

  1. Используйте текст ANSI. Сделать это с помощью TASKDIALOGCONFIGA а также TaskDialogIndirectA,
  2. Используйте текст Unicode. Переключите ваши строки из std::string в std::wstring,

Я лично рекомендовал бы последний вариант.

Я бы также рекомендовал вам не использовать tchar.hи прекратить использование _T(...), Так как вы ориентируетесь только на Unicode, вы должны написать L"Error" скорее, чем _T("Error"), Это имеет смысл использовать tchar.h если вы пишете код, который должен компилироваться для целей MBCS и Unicode. Это было неизбежное зло во времена, когда нам нужно было скомпилировать для Win 95/98 и Win NT / 2000. Но эти дни давно прошли.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]