水木子
发表于 2010-12-29 18:54:38
本帖最后由 水木子 于 2010-12-29 19:03 编辑
回复xuanfeng1234567
很粗糙很简陋,我的思路就是这样,具体自己改进吧
飘云 发表于 2010-12-29 16:18 http://www.autoitx.com/images/common/back.gif
虽然实现了功能,但效率方面还有待提升。
xuanfeng1234567
发表于 2010-12-29 19:05:27
木子大哥 有何高见?不妨提出来让小辈们学习学习!
水木子
发表于 2010-12-29 19:08:55
本帖最后由 水木子 于 2010-12-29 19:11 编辑
回复 17# xuanfeng1234567
不敢当啊!我只是觉得这样需要判断5个条件不大妥当!反而2楼说的方法倒是比较可取。
xuanfeng1234567
发表于 2010-12-29 19:43:25
回复 18# 水木子
嗯,说的很有道理哦! 简单的基础上又获得了想要的效果,这才是我们的目的。
又学到了一些,谢谢你们!
水木子
发表于 2010-12-29 19:53:04
本帖最后由 水木子 于 2010-12-29 19:54 编辑
回复 19# xuanfeng1234567
呵呵!看看我这个怎么样?
不推荐使用我这种,因为可能会将控件分组,造成单选或复选框出问题,不过也算是一种投机取巧的方法吧!
$MyGui = GUICreate('', 300, 300)
$Label1 = GUICtrlCreateLabel("", 100, 100, 150, 17)
$Group1 = GUICtrlCreateGroup('', -2, -8, 305, 310) ;位置自己看着改
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
EndSwitch
$a = GUIGetCursorInfo()
If $a = $Group1 Then
WinSetTitle($MyGui, '', "鼠标在窗口内")
Else
WinSetTitle($MyGui, '', "鼠标不在窗口内")
EndIf
WEnd
afan
发表于 2010-12-29 20:03:20
GUICreate('')
GUISetState()
GUIRegisterMsg(0x0200, 'WM_MOUSEMOVE')
While GUIGetMsg() <> -3
WEnd
Func WM_MOUSEMOVE()
ToolTip('界内')
EndFunc ;==>WM_MOUSEMOVE
水木子
发表于 2010-12-29 20:06:17
afan 发表于 2010-12-29 20:03 http://www.autoitx.com/images/common/back.gif
哈哈!一开始我也想到了“消息”,可惜对这一块儿不熟悉,还是前辈厉害!学习啦!
飘云
发表于 2010-12-30 14:58:31
本帖最后由 飘云 于 2010-12-30 15:03 编辑
afan 发表于 2010-12-29 20:03 http://www.autoitx.com/images/common/back.gif
超版们都是高手呀,咱对于msg不太了解,学习了{:1_576:}
lxz
发表于 2010-12-30 15:21:22
代码收下学习....
netegg
发表于 2010-12-30 15:29:29
回复 14# 飘云
这样做,实现是可以实现,不过一直有个疑问,这样做的话会不会影响其他操作,毕竟这只是个辅助功能,如果把主功能都影响了,是不是有点越俎代庖了
飘云
发表于 2010-12-30 19:14:30
本帖最后由 飘云 于 2010-12-30 19:16 编辑
回复 25# netegg
那么可以采用多线程方式或使用AdlibRegister函数呀,我那个只是一个思路,具体实现方式还是要看实际需要改进的嘛,而且超版那个就很赞,注册个msg就搞定了
netegg
发表于 2010-12-30 20:42:49
回复 26# 飘云
超版那个是针对界面的,控件的可能要麻烦些
83265358
发表于 2010-12-31 14:12:23
顶一下。。。。好好学习。。。。
455901394
发表于 2011-1-1 20:03:58
【已解决】如何让鼠标划过指定控件,执行相应的操作!
笑客柳毅
发表于 2011-1-2 23:30:37
学习了代码。呵呵。很好。很有帮助。