1

これまでのところ、Microsoft がここにある例をコピーして貼り付けただけです(ただし、 #include は削除しました)。

OnPaint がどのように継続的に呼び出されるかを理解しようとしていますが (移動オブジェクトがある場合)、複数回呼び出されることはないようです。

標準の Windows C++ グラフィック ライブラリ (つまり、GDI+、または別の標準 Windows API) を使用して移動オブジェクトを作成するにはどうすればよいですか? 自分で OnPaint を呼び出す必要がありますか? または、継続的に呼び出されるようにするための簡単な修正はありますか? それとも不可能なだけですか?

4

1 に答える 1

1

OnPaint() メソッドは、ウィンドウを再描画する必要があると Windows が判断した場合にのみ実行されます。これは通常、ウィンドウが最初に作成されたときに 1 回だけ発生します。または、ウィンドウを最小化して元に戻すとき。

強制的に複数回実行して何かをアニメーション化するには、再描画が必要であることを伝える必要があります。これを行う最善の方法は、タイマーを使用することです。これにより、アニメーション時計が得られます。間隔を 15.625 ミリ秒の倍数より少し小さい数値に設定します。45 ミリ秒はまともな値です。1 秒あたり 21 回の更新が得られます。十分に速くペイントできると仮定します。WM_TIMER メッセージ ハンドラーで InvalidateRect() を呼び出します。または、Winforms を使用する場合は Invalidate() を使用します。

于 2013-08-24T18:28:19.850 に答える