如何使用MessageBox函数显示BSTR值? 我对C++很陌生。我使用Code::Blocks,需要使用MessageBox函数显示BSTR值
我试图用谷歌搜索这个问题,但没有找到合适的答案 如何做到这一点?对于MessageBox来说是如何使用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是一
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 DwithMessageBoxW
我得到了我需要的,谢谢@迈克尔Chourdakis@Zurab-D Windows API有两个版本,窄字符集版本的API采用char
,宽字符集版本的API采用wchar\u t
。启用宽字符集版本需要先设置UNICODE和_UNICODE预处理器指令,然后再包括windows.h
。看见