4

WinAPIから使用しようとしてFindWindow()いますが、ユーザーにウィンドウのタイトルの入力を求めたい:

char *input;
cout << "Window title: ";
cin >> input;

かなり標準的。LPCWSTRでは、これをforに変換するにはどうすればよいFindWindow()でしょうか。

私はすでに次のことを試しました: _T(input)TEXT(input)(LPCWSTR)inputしかしどれもうまくいきませんでした。wchar_tの代わりに も使用してみましたが、他の場所charで必要になるため、代わりにchar使用すると何十ものエラーが発生します ...wchar_tchar

4

4 に答える 4

5

cin と cout の幅広いバリアントを使用できます。

wchar_t input[256];    // don't really use a fixed size buffer!
wcout << L"Window title: ";
wcin >> input;
于 2013-07-24T14:11:39.223 に答える
3

なぜ欲しいと思いますLPCWSTRか?LPCWSTR用にコンパイルされたプログラムで使用されUNICODEます。どこでも char 型を使用している場合は、プロジェクト プロパティの Character Set を 'Use UNICODEcharacter set' から 'Use Multibyte Character Set." に変更する必要がありますFindWindow

char input[256];
于 2013-07-24T14:31:46.573 に答える
1

wchar_t*まず、ユーザーの入力を の代わりに取得できますchar*。最良の選択肢になると思います。


LPCWSTRcharはワイド char 配列へのポインタであるため、すべてをに変換する必要がありますwchar_t

だからあなたが持っているとしましょう:

char arr[] = "Some string";

だからあなたの行動:

size_t size = strlen(arr);
wchar_t* wArr = new wchar_t[size];
for (size_t i = 0; i < size; ++i)
    wArr[i] = arr[i];

必要な場合は、 (または他のインデックス)LPCWSTRを使用するだけです。&wArr[0]

重要:メモリの割り当てを解除することを忘れないでください。

于 2013-10-22T08:34:04.620 に答える