MessageBoxW(hwnd, L"Καλημέρα", L"Τέστ", MB_OK|MB_APPLMODAL);
這工作,但現在我怎麼能傳遞一個值,這是在我的變量「消息」和「標題」?我不能再使用L了,因爲它是一個變量,
MessageBoxW(hwnd, Lmessage, Lcaption, MB_OK|MB_APPLMODAL); //doesn't work
有沒有L(消息)什麼的?消息和標題是WCHAR。
MessageBoxW(hwnd, L"Καλημέρα", L"Τέστ", MB_OK|MB_APPLMODAL);
這工作,但現在我怎麼能傳遞一個值,這是在我的變量「消息」和「標題」?我不能再使用L了,因爲它是一個變量,
MessageBoxW(hwnd, Lmessage, Lcaption, MB_OK|MB_APPLMODAL); //doesn't work
有沒有L(消息)什麼的?消息和標題是WCHAR。
如果你的變量是WCHAR*
型的,他們是自然的長字符串格式。
您可以按照原樣將它們傳遞給MessageBoxW
。
MessageBoxW(hwnd, message, caption, MB_OK|MB_APPLMODAL);
std::wstring s1 = L"Καλημέρα";
std::wstring s2 = L"Τέστ";
MessageBoxW(hwnd, s1, s2, MB_OK|MB_APPLMODAL);
爲了得到C字符串相當於:
usual_c_string=s1.c_str();
我不認爲有一個使用'std :: wstring'的MessageBoxW版本。你需要使用'.c_str()'。 –
工作例如:
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <string>
int main()
{
std::wstring message = L"Καλημέρα";
std::wstring header = L"Τέστ";
MessageBoxW(NULL, message.c_str(), header.c_str(), MB_OK);
return 0;
}
更好:
MessageBoxW(hwnd, boost::widen(message).c_str(), boost::widen(caption).c_str(), MB_OK|MB_APPLMODAL);
見utf8everywhere.org對於這背後的解釋。 另外:我會避免MSVC上的非ASCII字符串文字。如果源文件以不同的編碼保存,則此代碼的結果可能會更改。
你確定'message'和'caption'的類型是'WCHAR'嗎?這意味着他們每個人都擁有一個角色。他們可能是'WCHAR *'嗎? –