0

TextOut 関数を使用してウィンドウに単語を描画しようとしていますが、次の方法でうまくいきます。

HDC hdc = GetDC(windowHandle);
TextOut(hdc, 10, 10, TEXT("Hello World"), 16);
ReleaseDC(windowHandle, hdc);

そして、これは :Hello World を出力します

これまでのところすべて問題ありませんが、次の方法を実行すると:

HDC hdc = GetDC(windowHandle);
string myString = "Hello World";
TextOut(hdc, 10, 10, myString.c_str(), 16);
ReleaseDC(windowHandle, hdc);

プログラムの出力: Hello World#$%^&

#$%^& の部分は、実際にはキーボードでの書き方がわからない他の四角形の記号です。TextOut 関数の 4 番目のパラメーターは LPCSTR 型であり、文字列の後に .c_str() 関数を使用すると、LPCSTR 変数が正しく出力されるはずであり、プログラムが実行されてからそうなることを理解していますが、なぜ #$% を取得するのですか? ^& Hello World の最後に含まれていますが、その問題を修正するにはどうすればよいですか? 私のプログラムは文字列を生成し、それをウィンドウに出力したいので、最初の方法ではなく2番目の方法を使用する必要があります。

4

1 に答える 1

1

TextOut のドキュメント ( http://msdn.microsoft.com/en-us/library/windows/desktop/dd145133%28v=vs.85%29.aspx ) によると、fith パラメータは文字列の長さを反映しています。あなたは16ここで言っていますが、それはたったの 11 です。

于 2014-08-21T15:05:09.963 に答える