マウスドラッグ(ウィンドウを動かしている)の最中にマウスボタンを離させる処理をするにはどうすればいいのでしょうか
postMessage(form1.Handle,WM_RBUTTONUP,0,0);
としてもうまくいきません
よろしくお願いします
ドラッグ中ということは 'SetCapture' 状態なのでReleaseCaptureが必要だと思います。
でもそうするとドラッグがキャンセルされて元の位置に戻ってしまいますが。
ありがとうございます
元の位置に戻さずに処理したいのですが、そういう方法は無いんでしょうか
あまりスマートな方法ではないですが位置を再セットしてみるとか
---------------------------------------
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を呼べばよいかな
(あくまでも参考ということで)
ツイート | ![]() |