#マウスホイールイベント
マウスホイールイベント処理で複数回のイベントが発生しているようです。
イベント処理で画像の拡大を行うと、必要以上に拡大してしまいます。
#不要なイベントを削除
イベント処理終了後、不要なイベントを削除するにはどうすれば良いのでしょうか。
#問題の見える化
sleepを追加すると何度も拡大しているのが見えます。
#環境
プログラムはdelphiですが、処理はWin32APIのホイールマウス処理です。
#ソースコード
//マウスホイールイベント
procedure TFormSim.FormMouseWheel(Sender: TObject; Shift: TShiftState;
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
var
Msg: TMsg;
ScaleX:real;
ScrollBoxCursosPos: TPoint;
begin
ScrollBoxCursosPos := ImageXYZ.ScreenToClient(Mouse.CursorPos);//マウス位置から有意を判定
if (PtInRect(ImageXYZ.ClientRect, ScrollBoxCursosPos)) then
begin
画像の拡大処理/表示
end;
Sleep(500);//デバッグ用
while(PeekMessage(&msg, 0, WM_MOUSEFIRST, WM_MOUSELAST,PM_REMOVE))do//マウスイベント削除したい
begin // マウス系メッセージを削除
//GetMessage( &msg, 0, 0, 0 );
end;
end;
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/25 02:24
退会済みユーザー
2020/10/25 07:41 編集