2

私は持っている

MessageBoxW(hwnd, L"Καλημέρα", L"Τέστ", MB_OK|MB_APPLMODAL);

それは機能しますが、変数「メッセージ」と「キャプション」にある値を渡すにはどうすればよいですか? Lは変数なのでもう使えませんが、

MessageBoxW(hwnd, Lmessage, Lcaption, MB_OK|MB_APPLMODAL); //doesn't work

L(メッセージ)とかありますか?メッセージとキャプションは WCHAR です。

4

4 に答える 4

3

変数のタイプが の場合WCHAR*、それらは当然長い文字列形式になります。

そのまま渡しても構いませんMessageBoxW

MessageBoxW(hwnd, message, caption, MB_OK|MB_APPLMODAL);
于 2012-09-01T16:23:36.483 に答える
2

作業例:

#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;
}
于 2012-09-01T16:38:42.977 に答える
1
std::wstring s1 = L"Καλημέρα";
std::wstring s2 = L"Τέστ";
MessageBoxW(hwnd, s1, s2, MB_OK|MB_APPLMODAL);

同等の C 文字列を取得するには、次のようにします。

usual_c_string=s1.c_str();

文字列型の間にはさまざまな変換があります。

于 2012-09-01T16:14:10.907 に答える
0

より良い:

MessageBoxW(hwnd, boost::widen(message).c_str(), boost::widen(caption).c_str(), MB_OK|MB_APPLMODAL);

この背後にある説明については、utf8everywhere.org を参照してください。また、MSVC では非 ASCII 文字列リテラルを避けます。ソース ファイルが別のエンコーディングで保存されている場合、このコードの結果は変わる可能性があります。

于 2012-09-01T16:55:59.753 に答える