1.MouseMove事变中参加:

// ReleaseCapture;
// Perform(WM_SYSCOMMAND, $F017 , 0);

2.MouseDown事件中参加:

// POSTMESSAGE(Self.Handle,WM_LBUTTONUP,0,0);
// POSTMESSAGE(Self.Handle,274,61458,0);

3.MouseDown平地风波中投入:

// ReleaseCapture;
// Perform(WM_SYSCOMMAND, $F012, 0);

4.截获WM_NCHITTEST消息

procedure WMNCHITTEST(var Msg:TWMNCHITTEST);message WM_NCHITTEST;

procedure TForm1.WMNCHITTEST(var Msg: TWMNCHITTEST);
begin
inherited;
//Msg.Result:=HTCaption;
end;

private
procedure AppMessage(var Msg:TMsg;var Handled:Boolean);

procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnMessage:=AppMessage;
end;

procedure TForm1.AppMessage(var Msg: TMsg; var Handled: Boolean);
begin
//(GetKeyState(vk_CONTROL) < 0)
if (Msg.message=WM_LButtonDown) and
(DefWindowProc(Handle,WM_NCHitTest,
0,GetMessagePos)=HTClient) and
(True) then
begin
SendMessage(Handle,WM_NCLButtonDown,
HTCaption,GetMessagePos);
//发送鼠标在标题栏内按下的信息
Handled:=true;
end;
end;

在MousDown事件中写
ReleaseCapture;//释放鼠标控区域
SendMessage(Handle,WM_SYSCOMMAND,SC_MOVE+Samsungaption,0卡塔尔(قطر‎;//发送移动标题栏音讯
如,要在Panel上能够活动窗口
procedure TForm1.Panel1MouseDown(Sender: TObject; Button:
TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
SendMessage(Handle,WM_SYSCOMMAND,SC_MOVE+HTCaption,0);
end;

Author

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章