質問

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

たとえば、回転するキューブを表示するManaged Direct 3Dアプリケーションがあります。ポインターをタイトルバーの上に置き、マウスボタンを押したままにすると、ループにそのような条件をコーディングしていない場合でも、キューブは回転しなくなります。

ペイントが停止するのはなぜですか?利点は何ですか?最も重要なのは、これをどのように回避できるのですか?

役に立ちましたか?

解決

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top