Delphi中拖动无边框窗口的5种方法
2014-01-12 02:26
281 查看
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;
5.
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+HTCaption,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;
// 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;
5.
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+HTCaption,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;
相关文章推荐
- Delphi中拖动无边框窗口的5种方法
- Delphi中拖动无边框窗口的5种方法
- Delphi中拖动无边框窗口的5种方法
- delphi实现拖动无标题窗口的5种方法
- Delphi中拖动无边框窗口的几种简单方法
- 实现拖动无标题窗口的5种方法
- Delphi 窗口没有边框的方法
- 实现拖动无标题窗口的5种方法
- 一个最简单的Delphi2010的PNG异形窗口方法
- Delphi的5种方法类型
- wpf改变默认的窗口边框大小,去掉边框,并且可以拖动大小
- VC++无标题窗口以及控件拖动的方法
- 【解决方案】VMWare拖动窗口后有黑色边框(分辨率自适应问题)
- 无边框窗口拖动
- Delphi 代码实现窗口透明+圆角边框
- 【Qt编程】基于Qt的词典开发系列<四>--无边框窗口的缩放与拖动
- Qt 创建圆角、无边框、有阴影、可拖动的窗口 good
- Delphi获取其它进程窗口句柄的3种方法
- 无边框窗口拖动问题
- ●Winform拖动无边框窗口、播放音频、启动外部exe程序