dポイントプレゼントキャンペーン実施中!

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

A 回答 (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』もどうぞ。

参考URL:http://wisdom.sakura.ne.jp/system/winapi/win32/w …
    • good
    • 0
この回答へのお礼

これは違いますね・・・・

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

お礼日時:2007/09/13 22:54

LPCTSTRはマルチバイト文字コードならchar*なので質問の回答としてはあっていると思います。


これが違うとなると質問の意味がわかりません。
ちなみにint型を表示させるやり方を書いてもらえると質問の意味がわかるかもしれません。

char* lpString = "表示する文字列";
HDC hDC;

if ( (hDC = GetDC(hWnd)) != NULL ){
 TextOut( hDC, X座標, Y座標, lpString, lstrlen(lpString) );
 ReleaseDC( hDC );
}
// UNICODEだとエラーになります
    • good
    • 0
この回答へのお礼

どうも回答ありがとうございます。
恐らく、回答者様のプログラム例が僕のやりたかった事だと思います。

int型の方は、wsprint関数を用いて表示させました。
char*型はどうやってやればいいのかわからず質問させていただきました。

回答者様の例を実際に試してみて、分からなかったらまた、質問させていただきます。どうもありがとうございました。

お礼日時:2007/09/14 00:34

★質問の意味が…。


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

 


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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!