这次应该没问题了,在弹框之前修改临近3各的颜色
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Global $aButNum[400] ;按钮总数
Global $iNumber = 20 ;每行按钮数量
Global $iSpacingX = 50, $iSpacingY = 30 ;垂直、水平,间距
Opt('GUIOnEventMode', 1)
GUICreate('抽奖程序,空格键停止', $iSpacingX * Mod(399, $iNumber) + 100, $iSpacingY * Floor(399 / $iNumber) + 75)
GUISetOnEvent(-3, '_ButtonEvents')
For $i = 0 To UBound($aButNum) - 1
$aButNum[$i] = GUICtrlCreateButton($i + 1, $iSpacingX * Mod($i, $iNumber) + 25, $iSpacingY * Floor($i / $iNumber) + 25, 50, 30, -1, $WS_EX_STATICEDGE)
GUICtrlSetOnEvent(-1, '_ButtonEvents')
Next
GUISetState()
Dim $iX = $aButNum[0]
While 1
GUICtrlSetState($iX, $GUI_FOCUS) ;有什么方法可以只让激活的按钮变的显眼一点?
GUICtrlSetBkColor($iX - 1, 0x00ffff)
GUICtrlSetBkColor($iX, 0x00ff00) ;我试了这两件命令行,但是运行过程中如果延时调到10以下可能会出现相邻的两个按钮变成绿色
If $iX = $aButNum[UBound($aButNum) - 1] Then $iX = $aButNum[0]
$iX += 1
;~ Sleep(250)
WEnd
Func _ButtonEvents()
Switch @GUI_CtrlId
Case -3
Exit
Case $aButNum[0] To $aButNum[UBound($aButNum) - 1]
GUICtrlSetBkColor(@GUI_CtrlId - 1, 0x00ffff)
GUICtrlSetBkColor(@GUI_CtrlId + 1, 0x00ffff)
GUICtrlSetBkColor(@GUI_CtrlId, 0x00ff00)
MsgBox(0, '', '中奖序号为 :' & @GUI_CtrlId - $aButNum[0] + 1)
EndSwitch
EndFunc ;==>_ButtonEvents
|