マウスドラッグ中にボタンを離させるには?


桂木  2006-07-10 05:04:10  No: 22457

マウスドラッグ(ウィンドウを動かしている)の最中にマウスボタンを離させる処理をするにはどうすればいいのでしょうか
postMessage(form1.Handle,WM_RBUTTONUP,0,0);
としてもうまくいきません

よろしくお願いします


kkk  2006-07-10 13:56:26  No: 22458

ドラッグ中ということは 'SetCapture' 状態なのでReleaseCaptureが必要だと思います。
でもそうするとドラッグがキャンセルされて元の位置に戻ってしまいますが。


桂木  2006-07-10 22:20:42  No: 22459

ありがとうございます

元の位置に戻さずに処理したいのですが、そういう方法は無いんでしょうか


kkk  2006-07-11 14:22:03  No: 22460

あまりスマートな方法ではないですが位置を再セットしてみるとか
---------------------------------------
interface
・・・
const
  WM_DELAYEDEVENT = WM_APP+1;
  EV_SETPOS = 0;

type
  TForm1 = class(TForm)
・・・
  private
    procedure WmDelayedEvent(var Msg:TMessage); message WM_DELAYEDEVENT;
・・・
  end;

implementation

procedure TForm1.WmDelayedEvent(var Msg: TMessage);
begin
  if Msg.WParam = EV_SETPOS then
  begin
    SetBounds(Msg.LParamLo, Msg.LParamHi, Width, Height);
    Msg.Result := 1;
  end;
end;

procedure TForm1.hogehoge;
begin
  ReleaseCapture;
  PostMessage(Form1.Handle, WM_DELAYEDEVENT, EV_SETPOS, Left + (Top shl 16));
end;
---------------------------------------
ドラッグをキャンセルさせる時に hogehogeを呼べばよいかな
(あくまでも参考ということで)


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加