TextOutについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
たこやき

TextOutについて

#1

投稿記事 by たこやき » 15年前

ウィンドウの雛形に、
case WM_PAINT:{[/pre]
static int t;
PAINTSTRUCT ps;
wchar_t 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は再描画されないのですが、通っているのに描画されないのはなぜで
しょうか?またどうしたらちゃんと表示されるのでしょうか?

たこやき

Re:TextOutについて

#2

投稿記事 by たこやき » 15年前

WM_PAINTの中にInvalidateRect()を入れてそれでインクリメント(変数t)されたデータの数がようやく再描画
されるようになったのですが、これはあまりやらない方がよいのでしょうか?それともやっても大丈夫なのでし
ょうか?

softya

Re:TextOutについて

#3

投稿記事 by softya » 15年前

>WM_PAINTの中にInvalidateRect()を入れてそれでインクリメント(変数t)されたデータの数がようやく再描画
されるようになったのですが、これはあまりやらない方がよいのでしょうか?それともやっても大丈夫なのでし
ょうか?

やっちゃいけませんね。InvalidateRect()をWM_PAINTでやると再描画の無限ループです。
tを更新したかったら、WM_TIMERを使ってtの更新とInvalidateRect()を呼び出すべきです。

たこやき

Re:TextOutについて

#4

投稿記事 by たこやき » 15年前

わかりました。MW_TIMERを使えばいいのですね。
回答ありがとうございました!

たこやき

Re:TextOutについて

#5

投稿記事 by たこやき » 15年前

解決しました。

閉鎖

“C言語何でも質問掲示板” へ戻る