将TaskDialogConfig与std :: string一起使用

时间:2014-01-22 20:20:31

标签: c++ mfc taskdialog

我正在尝试使用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);

我已经对这个问题进行了一些研究,但我还没有找到解决方案。有人能帮助我吗?

1 个答案:

答案 0 :(得分:2)

您有两种选择:

  1. 使用ANSI文本。使用TASKDIALOGCONFIGATaskDialogIndirectA
  2. 来完成此操作
  3. 使用Unicode文本。将字符串从std::string切换为std::wstring
  4. 我个人会推荐后一种选择。

    我还建议您不要使用tchar.h,并停止使用_T(...)。由于您只定位Unicode,因此您应该编写L"Error"而不是_T("Error")。如果要编写必须为MBCS和Unicode目标编译的代码,则使用tchar.h才有意义。在我们需要为Win 95/98和Win NT / 2000编译时,这是一个必要的恶魔。但那些日子早已不复存在。