2012-05-18 16 views
12

私はかなりの形でリアルタイム描画を行っています。ユーザーがフォームのサイズを変更すると、ユーザーがマウスボタンを離すまでサイズ変更をグラフィックスレンダリングに適用したくないため、サイズ変更が完了します。ユーザーがフォームのサイズ変更を完了したら、これを検出してレンダリングのサイズを変更するにはどうすればよいですか?現在、フォームのOnResizeイベントを使用すると、マウスが移動したすべてのピクセルについて常にすべてを再描画します。フォームのサイズ変更の開始と停止を検出するにはどうすればよいですか?

私はイベントをマウスでダウンしてこれを追跡しようとしましたが、フォームのサイズを変更するときにこれらのイベントは呼び出されません。

答えて

20

移動またはサイジングを検出するには、WM_ENTERSIZEMOVEメッセージをキャッチします。ユーザーがウィンドウのタイトルバーまたはサイジングボーダーをクリックすると、ウィンドウに送信されます(ウィンドウが移動またはサイジングループに入る理由)。

移動またはサイジングを検出するには、WM_EXITSIZEMOVEメッセージをキャッチします。ユーザーがウィンドウのタイトルバーまたはサイジングボーダー(ウィンドウが移動またはサイジングループを終了させる理由)を解放すると、ウィンドウに送信されます。

フォームレベルで宣言(および実装)することによって、それらをそれらのいずれかをキャッチすることができます:

procedure WMEnterSizeMove(var Message: TMessage); message WM_ENTERSIZEMOVE; 
procedure WMExitSizeMove(var Message: TMessage); message WM_EXITSIZEMOVE; 
+6

+1。あなたは少し助けてもらえませんでしたか? :) –

+0

TLama:FMXでこれを行う方法はありますか? – RobertFrank

関連する問題