在MessageBoxW c ++中显示变量

时间:2015-01-01 11:48:49

标签: c++ windows unicode messagebox

我有一个问题,比如:

Ex:     MessageBoxW(0,L“ĐâylàABC(这是ABC)”,L“Lỗi(错误)”,0);

一切都好! 但我想将ABC替换为变量,如下所示:     char buff [500];     char author [] =“ABC”;     sprintf_s(buff,“Đâylà%s(这是%s)”,作者);     MessageBoxW(0,什么会在这里,L“Lỗi(错误)”,0);

我希望有人可以提供帮助!

1 个答案:

答案 0 :(得分:1)

您当然可以显示变量,但必须是正确的类型。 MessageBoxW采用LPCWSTR(宽),char[]提供LPCSTR(窄)。因此,相应地更换类型:

WCHAR buff[500];                                      // WCHAR not char
WCHAR author[] = L"ABC";                              // WCHAR not char
swprintf_s(buff, L"Đây là %s (This is %s)", author);  // swprintf_s not sprintf_s
MessageBoxW(0, buff, L"Lỗi (Error)", 0);

避免使用原始缓冲区并使用诸如ATL::CStringWstd::wstring之类的包装类也是一个好主意。


(我在决定是否回答此问题时遇到了一些麻烦。相关问题Why can't I display this string on MessageBox?似乎是重复的,但它已被关闭为Cannot convert parameter from 'const char[20]' to 'LPCWSTR'的副本,但没有回答这个问题。实际上它的答案包含在这个问题中。)