ほとんどの場合**私は、文字列にこの文字列を変換しようとしているが、それは任意のヒント
ため
char strText[13];
SendMessage(dropDown, CB_GETLBTEXT, dropDownSelection, reinterpret_cast<LPARAM>(strText));
std::string test(strText); // outputs W
std::string test2("WORKS"); // outputs WORKS
おかげで失敗しますあなたのプログラムはUnicodeモードでコンパイルされるため、strText
はUTF-16でエンコードされた文字列を受け取ります。 W
文字は1バイトに収まるため、2番目のバイトは0(リトルエンディアンエンコーディング)になります。
Windows APIとUnicodeモードでインターフェイスする場合は、char
を使用しないでください。代わりにwchar_t
とstd::wstring
を使用してください。
または、this question and its answersを読んで理解し、文字列をどのように処理するかを自分で考えてください。
Read more about Unicode in the Windows API。 And about Unicode in general。
'SendMessage(dropDown、CB_GETLBTEXT、dropDownSelection、reinterpret_cast(strText));の後の' strText'の内容は何ですか? –
NathanOliver
@NathanOliver同じですか?彼はコピーを渡しているので、リファレンスや関数はvoidを返しません。 –
@FirstStepわかりません。配列がポインタに崩壊するので、配列を塗りつぶすだけで何かがあるはずです。値渡しは、どこにポイントするか(何ではないか)を変更しようとする場合にのみ適用されます。 – NathanOliver