2015-01-01 2 views
1

У меня есть proplem, как:Отображение переменной в MessageBoxW C++

Ex: MessageBoxW (0, L "Djay là ABC (Это ABC)", L "LOI (Error)", 0);

Все в порядке! Но я хочу заменить ABC на переменную, например: char buff [500]; char author [] = "ABC"; sprintf_s (buff, "Đây là% s (Это% s)", автор); MessageBoxW (0, ЧТО БУДЕТ ЗДЕСЬ, L "Lỗi (Ошибка)", 0);

Я надеюсь, что кто-то может помочь!

+0

'MessageBoxW' требуется широкая строка. –

+1

Взгляните на класс CString. http://msdn.microsoft.com/en-us/library/aa315043%28v=vs.60%29.aspx. Он позволяет форматировать строку с помощью функции memberfunction и поддерживает LPCTSTR для перехода в окно сообщения – Unimportant

ответ

0

Вы можете отобразить переменную, но она должна быть правильного типа. 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::CStringW или std::wstring.


(у меня были некоторые проблемы, решая, следует ли ответить на этот вопрос. Соответствующий вопрос Why can't I display this string on MessageBox? кажется, дубликат, но он закрыт как дубликат Cannot convert parameter from 'const char[20]' to 'LPCWSTR', который не отвечает на этот вопрос. На самом деле ответ на него включается в этот вопрос.)

Смежные вопросы