5

ほとんどすべての Windows アプリケーションで、クライアント以外の領域でマウス ボタンを押したままにすると、描画が停止することに気付きました。なぜこれが必要なのですか?

たとえば、回転する立方体を表示するマネージド ダイレクト 3D アプリケーションがあります。ポインターをタイトル バーの上に置いてマウス ボタンを押したままにすると、ループにそのような条件をコーディングしていなくても、キューブの回転が停止します。

塗装はなぜ中止?利点は何ですか?最も重要なのは、これを回避するにはどうすればよいですか?

4

1 に答える 1

7

タイトル バーをクリックすると、ウィンドウ マネージャーが、クリックまたはドラッグ (ウィンドウの移動) を開始しているかどうかを判断しようとする間、短い一時停止があります。ボタンを押したままにしておくと、ドラッグになります。ウィンドウ マネージャは独自のメッセージ ループを設定し、マウスを離すまでメッセージを送り続けます。メッセージは引き続きディスパッチされるため、ウィンドウは引き続きメッセージを処理できるはずですが、アニメーションがカスタム メッセージ ループに依存している場合は、モーダル ドラッグ ループが終了するまでスタックします。

メッセージに応答してアニメーションをトリガーすることで、この問題を回避できます。私には、タイマーが良い選択のように思えます。

于 2008-10-27T06:02:19.080 に答える