在GUI里面做个图片按钮,如何在鼠标悬停的时候显示另外一个图片?
在GUI里面做个图片按钮,如何在鼠标悬停的时候显示另外一个图片?请教了,谢谢 一个想法:
比对鼠标的坐标和控件自身的坐标,在设定范围内的就触发GUICtrl... 原帖由 liongodmien 于 2008-10-29 23:00 发表 http://www.autoitx.com/images/common/back.gif
一个想法:
比对鼠标的坐标和控件自身的坐标,在设定范围内的就触发GUICtrl...
能否给段例子?非常感谢 给你一个未完成的脚本,仅供参考!! 原帖由 pcbar 于 2008-10-30 09:56 发表 http://www.autoitx.com/images/common/back.gif
给你一个未完成的脚本,仅供参考!!
不错,可惜这个是按下去之后才变图片的. 原帖由 l4ever 于 2008-10-30 15:51 发表 http://www.autoitx.com/images/common/back.gif
不错,可惜这个是按下去之后才变图片的.
无语.... 我日,这个GUICtrlSetOnHover_UDF复杂得吓人! 使用下面这个函数,后面有一段简单的示例,是用消息提示做的例子,图片也一样,case下面跟的代码不同就是了
GUIGetCursorInfo ( [窗口句柄] )
成功: 返回一个5个元素的数组来表示鼠标的坐标信息:
$array = X 坐标 (水平轴)
$array = Y 坐标(垂直轴)
$array = 鼠标左键被按下 (1 为按下, 0 为未按下)
$array = 鼠标右键被按下 (1 未按下, 0 为未按下)
$array = 鼠标下面的控件的控件ID( 0 为没有或者无法获取)
#include <GuiConstants.au3>
Opt("GUIOnEventMode", 1)
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 120, 350, 192, 114)
GUISetOnEvent($GUI_EVENT_CLOSE, "main")
$t=10;定义需要批量产生的按钮个数
Dim $Button;批量产生的按钮个数上限为999999
GUISetState()
#EndRegion ### END Koda GUI section ###
For $i = 1 To $t
$Button[$i] = GUICtrlCreateButton("Button" & $i, 30, 30*($i)-15, 60, 25, 0)
GUICtrlSetOnEvent($Button[$i], "main")
Next
_ReduceMemory(@AutoItPID);释放内存
$msg = 0
While $msg <> $GUI_EVENT_CLOSE
$msg = GUIGetMsg()
For $i = 1 To $t
$mouse = GUIGetCursorInfo()
$pos = MouseGetPos()
Switch $mouse
Case $Button[$i]
ToolTip('这是自动生产的第'&$i&'按钮', $pos + 10, $pos + 25)
EndSwitch
Next
Sleep(100)
_ReduceMemory(@AutoItPID);释放内存
WEnd
Func main()
For $i = 1 To $t
Switch @GUI_CtrlId
Case $GUI_EVENT_CLOSE
Exit
Case $Button[$i]
MsgBox(0, "第"&$i&"个", "button" & $i)
_ReduceMemory(@AutoItPID);释放内存
EndSwitch
Next
EndFunc ;==>main
Func _ReduceMemory($i_PID = -1);内存释放函数
If $i_PID <> -1 Then
Local $ai_Handle = DllCall("kernel32.dll", 'int', 'OpenProcess', 'int', 0x1f0fff, 'int', False, 'int', $i_PID)
Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', $ai_Handle)
DllCall('kernel32.dll', 'int', 'CloseHandle', 'int', $ai_Handle)
Else
Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', -1)
EndIf
Return $ai_Return
EndFunc ;==>_ReduceMemory
[ 本帖最后由 298311657 于 2009-2-17 00:12 编辑 ] 支持狮子的说法 我挺好奇这个释放内存的效果如何,即使有,那么认为一般的小程序有必要么?
——纯粹的疑惑。
不小心发个疑惑,马上测试了一下,我一个原占用物理内存19M占用虚拟内存16M的程序,在启动后使用了如上的释放内存作业,检查占用物理内存1M占用虚拟内存16M。
没话说。效果明显。
顺便跑题来谢谢这位 298311657 的朋友。呵呵
[ 本帖最后由 KiwiCsj 于 2009-2-17 23:44 编辑 ]
页:
[1]