グラフィックス

タイマーを使えば、動きのある画面になります。

タイマー (win145)

"MyApp.h" です。

//
//	MyApp.h
//

class MyApp : public MyMainWnd{
public:
	// WM_ClOSE
	void wmClose(){
		KillTimer(hWnd, 1);		// タイマー削除
	}
	// WM_CREATE
	void wmCreate(){
		SetTimer(hWnd, 1, 10, NULL);	// タイマー設定
	}
	// WM_PAINT
	void wmPaint(HDC hdc){
		MyDC g(hdc);
		
		static int t = 0;

		// 描画----------------------------------
		if(t == 0)
			g.MoveTo(0, 0);
		else
			g.LineTo(t, t);
		t++;
	}
};

実行画面です。 しかし、実際には直線が左上から右下に向かって伸びていくように見えます。

解説

タイマーは、SetTimer関数で設定します。 これでタイマーがスタートします。 これで、設定した時間が経つと、WM_TIMERメッセージが送られてきます。 ですから、WM_TIMERメッセージの中で、再描画を要求します。 そのため、InvalidateRect関数を使います。 これは、WM_PAINTメッセージを出します。 結局、 WM_PAINT で描画することになります。 最後に、タイマーがいらなくなったら、KillTimer関数で開放します。

ところで、SetTimer関数と、KillTimer関数をいつ使うかが問題です。 Windowが作られるとき、WM_CREATE がやってきます。 Windowが閉じられるとき、WM_ClOSE がやってきますので、そこで使ってみました。


[前] [目次] [次]