当前位置:主页>Delphi教程>文章内容
移动无标题栏窗口
来源: 作者: 发布时间:2007-04-29  
一般情况下,移动一个窗体需要将鼠标放置在标题栏上才能拖动窗体,为 什么非要使用标题栏呢?其实我们可以使用一个巧妙的方法来实现将鼠标放置 在窗体上按下就可拖动窗体,下面先看实现代码。在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)传递出去,这样就巧妙的欺骗程序认为是标题栏被按下,当然就可拖动窗体了。


 
上一篇:Delphi中避免使用ClassName判断对象的类型   下一篇:动画显示窗体
 
  相关文章
·Delphi中避免使用ClassName判断对象的
·动画显示窗体
·使DBGrid的列自动调整到何时大小
·delphi中的split函数
·自动化每日构建(二)用Ant来完成java
·改变DBGrid列的颜色,没什么特别,但是
·D7下的只能输入数字的控件(类似PB的Ma
·取的Combobox中的所选择项的值
·数据完整性(数据的似真性而非正确或者
·AXScript.pas,从官方站点找到的IActiv
·关于DBGRIDEH导出数据到CSV
·DELPHI的原子世界
 
【关闭窗口】
推荐本站资源
最新文章