怎样判断鼠标移出窗体问题,在线等..
热门软件下载:
窗体为无模式,因窗体上布满控件,无法在form_mousemove事件中判断,有没有其它方法实现啊?最好不要用定时器,
推荐阅读
实现这样的功能其实很简单,原理是:判断鼠标是否移动到了屏幕的最左边或最右边,如果移到了则显示窗体,如果鼠标移开了窗体则隐藏。在程序中,我们将用到getcursorpos这个api函数,这个函数的作用就是获取当前鼠标的坐标值,我们可以通过这个值来判断鼠标是否移到了屏幕的最边缘。
下面我们就开始吧。
新建一窗体,将form1更名为autohide,将vbborderstyle属性设置为4-fixed toolwindow(这样就不能改变窗体的大小),scalemode属性设置为2-point。加入一个timer控件,将interval的值设为1。再新建一个模块,输入如下的代码:
public declare function getcursorpos lib "user32" (lppoint as pointapi) as long
type pointapi
x as long
y as long
end type
该代码则是用于声明getcursorpos这个api函数的。这个api函数可以在vb6中自带的“api浏览器”中查找到。
在autohide窗体中,输入如下代码:
dim mouse as pointapi这句代码在声明部分中加入
private sub form_load()
autohide.height = screen.height 使窗体高度与屏幕高度相同
autohide. = 0调整窗体的显示位置
autohide.left = (0 - autohide.width) + 50 使窗体在屏幕的最左边并显示出一小部分窗体,此时为收缩状态
end sub
private sub timer1_timer()
a = getcursorpos(mouse)
if mouse.x = 0 then鼠标移到了屏幕的最左边
autohide.left = 0
end if
if mouse.x > autohide.scalewidth then如果鼠标没有在窗体之上则隐藏窗体
autohide.left = (0 - autohide.width) + 50 如果前面没有加上50,这里也不加上。
end if
end sub
好了,单击f5运行一下就可以看到我们的效果了。
相关评论