这个就不清楚了,看了下示例,实际接受拖动是back这个控件(TvgRectangle),应该是在这个TvgRectangle控件封装了这个拖动功能,得跟它的源码去看,或者看官方文档。 不过没兴趣研究这个东西了,你也不应该花时间在这里了,vgscene这东西被EMB收购包装成firemoneky后,vgscene貌似也都不再维护了,同样的功能和效果firemeonky都能实现(因为压根就是同一个东西)。可以去研究firemonkey。
root1->HitTest=False的话,那么root1盖住的主窗体就能接受到鼠标点击了,即鼠标点击能穿透到主窗体中,在主窗体的OnMouseDonw下处理就行了,你要明白HitTest的意思嘛
就是把root1->HitTest=true, 非false啊。。。咋还不明白
记得要更改root1的hittest属性为false,否则窗体无法拖动! 这不是说的很清楚了么?那么你要的是什么效果? 有标题栏的话就:记得要更改root1的hittest属性为false,否则窗体无法拖动! 没有标题栏的话就用我给你的代码 你的第一个网页的教程中是把标题栏去掉了的,你用root1的hittest属性为false+我的代码,或者在窗体上加一个Panel作为容器,如果不影响你的界面的话 加个容器是很正常的编程需求
什么是“vgScene的对话框”,如果想在窗体任意地方都可以拖动,那么把hittest设为true,处理root1的OnMouseDown ReleaseCapture(); PerForm(WM_SYSCOMMAND, 0xF012, 0); 就不要用另外控件了,即不要标题栏概念了,整个窗体任意都拖动
[quote=引用 13 楼 qq752923276 的回复:] [quote=引用 9 楼 kfrght 的回复:] 在窗体的 OnMouseDown 事件中加入下面的代码: void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { if(Button == mbLeft){ // 判断是否按了鼠标左键 //ReleaseCapture(); // 释放鼠标操作 SetCaptureControl(NULL); // 我决得这样比用ReleaseCapture好 SendMessage( Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0); // 移动无标题栏窗体 } } 或者在你拖动时鼠标光标所在的控件的MouseDown事件里
在窗体的 OnMouseDown 事件中加入下面的代码: void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { if(Button == mbLeft){ // 判断是否按了鼠标左键 //ReleaseCapture(); // 释放鼠标操作 SetCaptureControl(NULL); // 我决得这样比用ReleaseCapture好 SendMessage( Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0); // 移动无标题栏窗体 } }
[quote=引用 9 楼 kfrght 的回复:] 在窗体的 OnMouseDown 事件中加入下面的代码: void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { if(Button == mbLeft){ // 判断是否按了鼠标左键 //ReleaseCapture(); // 释放鼠标操作 SetCaptureControl(NULL); // 我决得这样比用ReleaseCapture好 SendMessage( Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0); // 移动无标题栏窗体 } } 或者在你拖动时鼠标光标所在的控件的MouseDown事件里
在窗体的 OnMouseDown 事件中加入下面的代码: void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { if(Button == mbLeft){ // 判断是否按了鼠标左键 //ReleaseCapture(); // 释放鼠标操作 SetCaptureControl(NULL); // 我决得这样比用ReleaseCapture好 SendMessage( Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0); // 移动无标题栏窗体 } } 或者在你拖动时鼠标光标所在的控件的MouseDown事件里
604
社区成员
13,460
社区内容
加载中
试试用AI创作助手写篇文章吧