发信人: redfox (Z掉了几乎所有的版...), 信区: BorlandDev
标 题: Delphi编程 -- 2.7 不用标题栏也移动窗体
发信站: 哈工大紫丁香 (2000年09月01日13:27:24 星期五), 站内信件
不用标题栏也移动窗体
一般情况下,移动一个窗体需要将鼠标放置在标题栏上才能拖动窗体,为 什
么非要使用标题栏呢?其实我们可以使用一个巧妙的方法来实现将鼠标放置 在窗
体上按下就可拖动窗体,下面先看实现代码。在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;
上面的关键代码虽然只有两行,但它实现了鼠标直接拖动窗体的目的。代码的
原理是利用窗体的WM_NCHITTEST消息,这个消息是当光标移动、鼠标按下或释放时
发生的,当程序检测到鼠标在窗体中按下的消息后(消息的值为htClient),将鼠
标在标题栏上按下时产生的消息(值为htCaption)传递出去,这样就巧妙的欺骗
程序认为是标题栏被按下,当然就可拖动窗体了。
--
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.227.107]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.458毫秒