- ベストアンサー
char型の文字列をウィンドウに表示させる。
c言語のAPIを用いてプログラミングをしているものです。 char*型の文字列をウィンドウに表示させるにはどうしたらいいでしょうか。できれば、例を挙げて教えていただけないでしょうか。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
★アドバイス ・ウインドウとはクライアント領域のことですか? もしそうであればクライアント領域のデバイスコンテキストを取得してから 文字列を描画すればよいだけです。 ・下にサンプルを載せておきます。 サンプル: LPCTSTR lpString = TEXT("表示する文字列"); HDC hDC; if ( (hDC = GetDC(hWnd)) != NULL ){ TextOut( hDC, X座標, Y座標, lpString, lstrlen(lpString) ); ReleaseDC( hDC ); } その他: ・WM_PAINT メッセージで描画する場合は (1)BeginPaint() (2)TextOut() (3)EndPaint() の3ステップで行います。 詳しくは次のリンクを参考にして下さい。 http://arcpit.co.jp/winapi/api_01/ap010310.htm→『WM_PAINT』 ・以上。下の『参考URL』もどうぞ。
その他の回答 (3)
- php504
- ベストアンサー率42% (926/2160)
LPCTSTRはマルチバイト文字コードならchar*なので質問の回答としてはあっていると思います。 これが違うとなると質問の意味がわかりません。 ちなみにint型を表示させるやり方を書いてもらえると質問の意味がわかるかもしれません。 char* lpString = "表示する文字列"; HDC hDC; if ( (hDC = GetDC(hWnd)) != NULL ){ TextOut( hDC, X座標, Y座標, lpString, lstrlen(lpString) ); ReleaseDC( hDC ); } // UNICODEだとエラーになります
お礼
どうも回答ありがとうございます。 恐らく、回答者様のプログラム例が僕のやりたかった事だと思います。 int型の方は、wsprint関数を用いて表示させました。 char*型はどうやってやればいいのかわからず質問させていただきました。 回答者様の例を実際に試してみて、分からなかったらまた、質問させていただきます。どうもありがとうございました。
- Oh-Orange
- ベストアンサー率63% (854/1345)
★質問の意味が…。 >普通にchar型の文字列を表示させたいのです。 >TEXTOUTのやり方は知っています。 >わかりますか? ↑ char型ですか? LPCTSTR はコンパイル・オプションでマルチバイト文字になっていれば普通のchar型と 同じ型になります。Unicode 文字になっているときにchar型の文字列を表示しない場合は Unicode文字列に変換してから表示すれば良い。 あるいはマルチバイト専用の TextOutA() 関数で描画すればいいと思います。 >ちなみにint型を表示させるやり方はわかりました。 ↑ これはもっと分かりませんでした。 ・コンパイル・オプションはどのようにしていますか? つまりは文字セットがマルチバイト文字か、Unicode 文字のどちら? 補足して下さい。 ・以上。
- ninigi
- ベストアンサー率43% (10/23)
> 普通にchar型の文字列を表示させたいのです。 > TEXTOUTのやり方は知っています。 察するに、 Visual C++がデフォルトでUNICODE環境なので、TextOutにchar*を渡せなくて困っている、 という事ですかね? TextOut ではなくANSI文字列用の TextOutA を使えば解決する?
お礼
これは違いますね・・・・ 普通にchar型の文字列を表示させたいのです。 TEXTOUTのやり方は知っています。 わかりますか? ちなみにint型を表示させるやり方はわかりました。