• ベストアンサー

char型の文字列をウィンドウに表示させる。

c言語のAPIを用いてプログラミングをしているものです。 char*型の文字列をウィンドウに表示させるにはどうしたらいいでしょうか。できれば、例を挙げて教えていただけないでしょうか。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.1

★アドバイス ・ウインドウとはクライアント領域のことですか?  もしそうであればクライアント領域のデバイスコンテキストを取得してから  文字列を描画すればよいだけです。 ・下にサンプルを載せておきます。 サンプル: 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』もどうぞ。

参考URL:
http://wisdom.sakura.ne.jp/system/winapi/win32/win15.html
noname#142813
質問者

お礼

これは違いますね・・・・ 普通にchar型の文字列を表示させたいのです。 TEXTOUTのやり方は知っています。 わかりますか? ちなみにint型を表示させるやり方はわかりました。

その他の回答 (3)

  • php504
  • ベストアンサー率42% (926/2160)
回答No.4

LPCTSTRはマルチバイト文字コードならchar*なので質問の回答としてはあっていると思います。 これが違うとなると質問の意味がわかりません。 ちなみにint型を表示させるやり方を書いてもらえると質問の意味がわかるかもしれません。 char* lpString = "表示する文字列"; HDC hDC; if ( (hDC = GetDC(hWnd)) != NULL ){  TextOut( hDC, X座標, Y座標, lpString, lstrlen(lpString) );  ReleaseDC( hDC ); } // UNICODEだとエラーになります

noname#142813
質問者

お礼

どうも回答ありがとうございます。 恐らく、回答者様のプログラム例が僕のやりたかった事だと思います。 int型の方は、wsprint関数を用いて表示させました。 char*型はどうやってやればいいのかわからず質問させていただきました。 回答者様の例を実際に試してみて、分からなかったらまた、質問させていただきます。どうもありがとうございました。

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.3

★質問の意味が…。 >普通にchar型の文字列を表示させたいのです。 >TEXTOUTのやり方は知っています。 >わかりますか?  ↑  char型ですか?  LPCTSTR はコンパイル・オプションでマルチバイト文字になっていれば普通のchar型と  同じ型になります。Unicode 文字になっているときにchar型の文字列を表示しない場合は  Unicode文字列に変換してから表示すれば良い。  あるいはマルチバイト専用の TextOutA() 関数で描画すればいいと思います。 >ちなみにint型を表示させるやり方はわかりました。  ↑  これはもっと分かりませんでした。 ・コンパイル・オプションはどのようにしていますか?  つまりは文字セットがマルチバイト文字か、Unicode 文字のどちら?  補足して下さい。 ・以上。

  • ninigi
  • ベストアンサー率43% (10/23)
回答No.2

  > 普通にchar型の文字列を表示させたいのです。 > TEXTOUTのやり方は知っています。   察するに、 Visual C++がデフォルトでUNICODE環境なので、TextOutにchar*を渡せなくて困っている、 という事ですかね?   TextOut ではなくANSI文字列用の TextOutA を使えば解決する?  

関連するQ&A