以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]移动无边框窗口?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=86544)

--  作者:poiokm26
--  发布时间:2016/6/20 12:43:00
--  [求助]移动无边框窗口?
论坛里有例子,不过超出帮助范围的知识,一时半刻理解不全。
改用折中的方法,参考移动控件的例子。
定义全局变量x,y.
鼠标按下事件:
 If e.Button = MouseButtons.Left Then
     vars("x") = e.X
     vars("y") = e.Y
  End If        

鼠标移动事件:
 If e.Button = MouseButtons.Left Then
   e.Sender.Left += e.x - vars("x")
   e.Sender.top += e.y - vars("y")
end if 

上面的代码用在窗口中的控件是没有问题的。

但是用在无边框的独立窗口。
panel鼠标按下事件
If e.Button = MouseButtons.Left Then
     vars("x") = e.X+ e.Form.BaseForm.left
     vars("y") = e.Y+e.Form.BaseForm.Top
End If

移动事件:
If e.Button = MouseButtons.Left Then
 
 e.Form.BaseForm.left =e.Form.BaseForm.left+(e.x+e.Form.BaseForm.left )- vars("x")
      e.Form.BaseForm.Top= e.Form.BaseForm.Top+(e.y+e.Form.BaseForm.Top )- vars("y")

End If


效果倒是出来了。但是轻轻拉一下,窗口飞到不知那去了。
这原理是一样的,怎么效果就差别这么大呢。



(对不起,搞定了。。直接删去+e.Form.BaseForm.left)

有点不美观,拖个小尾巴。要怎么解决呢。
[此贴子已经被作者于2016/6/20 14:26:06编辑过]

--  作者:大红袍
--  发布时间:2016/6/20 20:07:00
--  

 拖个小尾巴指什么?做个例子发上来。


--  作者:poiokm26
--  发布时间:2016/6/20 20:47:00
--  

就是拖动的时候重影。就像window的纸牌游戏,赢了就有一排重复的图标。

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:无边框窗体实现基本操作.table

附件是论坛下载的例子,窗口2 才是我自己做的。

 

编程学到关于DLL学不下去啊。。

 


--  作者:大红袍
--  发布时间:2016/6/20 20:52:00
--  
 测试没问题啊,什么重影。
--  作者:poiokm26
--  发布时间:2016/6/20 21:01:00
--  

窗口2 才是我做的


图片点击可在新窗口打开查看此主题相关图片如下:011.jpg
图片点击可在新窗口打开查看

--  作者:大红袍
--  发布时间:2016/6/20 21:07:00
--  
 窗口1有没有问题?我两个测试,都没问题啊。
--  作者:poiokm26
--  发布时间:2016/6/20 21:12:00
--  

窗口1是论坛下载原样,没有问题。

 

窗口2自己做的,拖快一点就会有这样的情况


--  作者:大红袍
--  发布时间:2016/6/20 21:43:00
--  
 要像窗口1那样处理一下。照抄就好。有什么问题?