• 締切済み

TextOutについて

ウィンドウの雛形に、 case WM_PAINT:{ static int t; PAINTSTRUCT ps; char cbuf[100]; HDC hdc = BeginPaint( hWnd, &ps ); wsprintf( cbuf, _T("on WM_PAINT%d"),t); TextOut(hdc,0,100,cbuf,sizeof(cbuf)); SetWindowText( hWnd, cbuf ); t++; EndPaint( hWnd, &ps ); break; } として実行したところ、ウィンドウを任意のところに重ねて、移動すると、SetWindowはタイトルバーにちゃんとの値が表示されるのですが、TextOutのtは再描画されないのですが、通っているのに描画されないのはなぜでしょうか?

みんなの回答

  • Yanch
  • ベストアンサー率50% (114/225)
回答No.4

何を思って、BeginPath、EndPath を使おうと思ったのか、理解出来ません。 説明できるでしょうか? > もしかしてTextOut()ではできないということでしょうか? えっと。何が理解出来ていて、何が理解出来てないのか、一度整理した方が良 いのではないでしょうか。 内容を理解しないまま、なんとなく、コーディングをして、理解しないまま放 置してある、様に感じます。 質問の内容が的を得ないのも、調べ方がトンチンカンなのも、このあたりが理 由ではないかと思います。 例えば、 使用する API のリファレンスページを確認しますよね。 そこで、「リージョン」とか「パス」とか、わからない単語が見つかると、 「リージョン」、「パス」の意味を調べるはずです。まさか知らないまま放置 して、API の説明を理解できるとは考えないでしょう。 Win32 API と GDI について、お勉強できそうなサイトを見つけました。 一度、お勉強しなおしてみてはいかがでしょう。 ・標準 Windows API http://wisdom.sakura.ne.jp/system/winapi/win32/index.html

79562
質問者

お礼

回答ありがとうございます。今そのサイトでお世話になっていてその描画領域のサイズまで進めたところです。このサイトを勉強すれば出きるようになるのでしょうか?

  • Yanch
  • ベストアンサー率50% (114/225)
回答No.3

> 回答有難うございます。今も調べてみているのですが、”テキスト出力する > 領域を、更新が必要な領域としてマーク”検索などをかけてはみたのですが、 > 自分では調べることができませんでした。どういうことなのかさっぱりです > ・・・何かヒントなどいただけないでしょうか? いったいどこを探しているのだろう。 APIを使うなら、まずリファレンスページは目を通す事をお勧めします。 ・BeginPaint http://msdn.microsoft.com/ja-jp/library/cc428337.aspx ・EndPaint http://msdn.microsoft.com/ja-jp/library/cc428553.aspx ・TextOut http://msdn.microsoft.com/ja-jp/library/cc428775.aspx

79562
質問者

お礼

回答ありがとうございます。 リファレンスページを参考にしたのですが、 case WM_PAINT:{ static int t; PAINTSTRUCT ps; wchar_t cbuf[100]; HDC hdc = BeginPaint( hWnd, &ps ); BeginPath(hdc); wsprintf( cbuf, _T("on WM_PAINT%d"),t); TextOut(hdc,0,100,cbuf,sizeof(cbuf)); EndPath(hdc); SetWindowText( hWnd, cbuf ); t++; EndPaint( hWnd, &ps ); break; } とやっても今度は表示自体されませんでした。 なにがいけないのでしょうか?

79562
質問者

補足

もしかしてTextOut()ではできないということでしょうか?

  • Yanch
  • ベストアンサー率50% (114/225)
回答No.2

>>テキスト出力する領域を、更新が必要な領域としてマークしてみてはいかがですか。 >具体的にどうすればいいのでしょうか?よろしくお願いします。 調べれば、すぐにわかりそうな事ですが、調べてからの発言でしょうか? どのような事を調べたのかは、伝わってきませんよ。

79562
質問者

お礼

回答有難うございます。今も調べてみているのですが、”テキスト出力する領域を、更新が必要な領域としてマーク”検索などをかけてはみたのですが、自分では調べることができませんでした。どういうことなのかさっぱりです・・・何かヒントなどいただけないでしょうか?

  • Yanch
  • ベストアンサー率50% (114/225)
回答No.1

BeginPaint, EndPaintで、更新リージョンのクリッピングが行われているんじゃないかな。 テキスト出力する領域を、更新が必要な領域としてマークしてみてはいかがですか。 あと、char、TCHAR、wchar_tが混合しているみたいです、調べて修正しましょう。

79562
質問者

お礼

回答ありがとうございます。 >テキスト出力する領域を、更新が必要な領域としてマークしてみてはいかがですか。 具体的にどうすればいいのでしょうか?よろしくお願いします。