如何在窗体内部拖动也可以随意拖动窗体?

Jieni 2004-08-30 02:03:53
由于设计需要,我把窗体的borderstyle属性设位bsnone,但又想随意拖动,因为没有了标题拦,所以我做了下面的函数,目的是让用户在窗体内拖动也如同拖动标题栏,但还是不行,请大侠指正!!
Procedure WMNCHitTest(Var M:TWNCHitTest);message WM_NCHitTest;

procedure TForm1.WMNCHitTest(Var M:TWNCHitTest)
begin
inherited;
if M.Result=htClient then M.Result:=htCaption;

end
...全文
169 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
DemonLoveLizzy 2004-08-31
  • 打赏
  • 举报
回复
ReleaseCapture
SendMessage (想按住拖动的控件或窗体的句柄), WM_NCLBUTTONDOWN, HTCAPTION, 0

写到想按住拖动的控件或窗体的ONMOUSEDOWN过程中就可以了。DELPHI的消息处理确实简单,但局限性也相对大了些。我还是喜欢用API。
hansion3406 2004-08-30
  • 打赏
  • 举报
回复
关键是你要在什么操作下让用户可以拖动窗体..
如果做个假的..比如说话个图片的话,那你就得在那个图片控件上面做操作.

如果是整个窗体的话,那直截了当地写消息处理就可以了..
hansion3406 2004-08-30
  • 打赏
  • 举报
回复
做个假的标题..如果有大富翁离线的话,找一下假标题..就可以了..

其实就是在窗体内用消息挂住鼠标的动作..就可以了..
Jieni 2004-08-30
  • 打赏
  • 举报
回复
是啊,上面还有Panel,那我该如何是好:<
kaguo 2004-08-30
  • 打赏
  • 举报
回复
你要是窗体上有其他控件覆盖就不行了
kaguo 2004-08-30
  • 打赏
  • 举报
回复
点住窗体任意部分,都能拖动
kaguo 2004-08-30
  • 打赏
  • 举报
回复
在Form1的“Private”部分声明过程:
在private部分加入下列代码:
procedure wmnchittest(var msg:twmnchittest);
message wm_nchittest;
在程序部分加入以下代码:
procedure TForm1.wmnchittest(var msg:twmnchittest);
begin
inherited;
if (htclient=msg.result) then msg.result:=htcaption;
end;

没错误的 ,确实可以拖动

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧