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番目の方法を使用する必要があります。