如何使用MessageBox函数显示BSTR值? 我对C++很陌生。我使用Code::Blocks,需要使用MessageBox函数显示BSTR值

如何使用MessageBox函数显示BSTR值? 我对C++很陌生。我使用Code::Blocks,需要使用MessageBox函数显示BSTR值,c++,codeblocks,C++,Codeblocks,我试图用谷歌搜索这个问题,但没有找到合适的答案 如何做到这一点?对于MessageBox来说是wchar\u t*,因此您可以将其直接传递给MessageBoxWMessageBoxW(hwnd、bStrVal等) 对于MessageBoxA,必须使用WideCharToMultiByte进行转换 建议:在应用程序中始终使用unicode,永远不要离开它 的可能重复项,但BSTR有一条奇怪的规则,即nullptr是有效的BSTR(但不是MessageBox的有效参数)。nullptrBSTR是一

我试图用谷歌搜索这个问题,但没有找到合适的答案

如何做到这一点?

对于MessageBox来说是
wchar\u t*
,因此您可以将其直接传递给MessageBoxW<代码>MessageBoxW(hwnd、bStrVal等)

对于
MessageBoxA
,必须使用
WideCharToMultiByte
进行转换


建议:在应用程序中始终使用unicode,永远不要离开它

的可能重复项,但
BSTR
有一条奇怪的规则,即
nullptr
是有效的
BSTR
(但不是
MessageBox
的有效参数)。
nullptr
BSTR
是一个空字符串。如果我直接传递它,编译器会抛出一个错误“错误:无法将参数“2”的'BSTR{aka wchar_t*}转换为'LPCSTR{aka const char*}到'int MessageBoxA(HWND,LPCSTR,LPCSTR,UINT)'|”@Zurab Dwith
MessageBoxW
我得到了我需要的,谢谢@迈克尔Chourdakis@Zurab-D Windows API有两个版本,窄字符集版本的API采用
char
,宽字符集版本的API采用
wchar\u t
。启用宽字符集版本需要先设置UNICODE和_UNICODE预处理器指令,然后再包括
windows.h
。看见