在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)传递出去,这样就巧妙的欺骗程序认为是标题栏被按下,当然就可拖动窗体了。
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)传递出去,这样就巧妙的欺骗程序认为是标题栏被按下,当然就可拖动窗体了。
解决方案 »
- 动态创建Form出错
- 发现网络好东东.给大家分享 可以免费看电影 http://www.vvplayer.com
- 请教如何保存当前剪贴板的内容,然后我执行自己的剪贴板操作,之后再恢复保存的内容和状态?
- 一段sql的程序出错,请高手指教
- Adoquery是不是不能执行'select * into [数据库绝对地址].[表名] From 表名'的SQL语句
- dbgrid+treeview组合录入数据的问题
- 二次查询怎样实现呢?
- fastReport控件怎样显示报表
- 又一个问题!!
- [TIPS]昨天看到一个有趣的功能,如果你在编写浏览器,那么请注意了:IE 自动完成 地址栏 (
- 哪位老师能讲一讲delphi5比delphi4增加了多少新的特点和功能([email protected])
- DELPHI 的数据库问题
仍有问题请教:1. Procedure wmnchittest() 中的inerited起的什么作用?
2. 但是这样的话,不能设置Cursor的形状了?