回复 15# qsy666888
哦!难道是这个函数库截取了 WM_COMMAND 消息,导致按钮无法重绘?
按理说应该不会啊!WIN7是一切正常的。
要是这样的话,还是有办法解决的,只是不知道你要的完整程序是什么样的,因为这个问题牵连的东西比较多。
你换下面这代码试试!
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include 'GUICtrlOnHover.au3'
Opt('GUIOnEventMode', 1)
$MyGui1 = GUICreate('', 400, 300)
GUISetOnEvent(-3, '_GuiMsg')
$Btnton1_1 = GUICtrlCreateButton('显 示', 150, 100, 100, 40)
GUICtrlSetOnEvent($Btnton1_1, '_GuiMsg')
GUISetState()
$MyGui2 = GUICreate('', 300, 100, -1, -1, -1, -1, $MyGui1)
GUISetOnEvent(-3, '_GuiMsg')
GUICtrlCreatePic('bg.jpg', 0, 0, 300, 100)
GUICtrlSetState(-1, $GUI_DISABLE)
$Btnton2_1 = GUICtrlCreatePic('Bitmap_181.bmp', 50, 50, 115, 26)
GUICtrlSetOnEvent($Btnton2_1, '_GuiMsg')
$Btnton2_2 = GUICtrlCreateButton('', 200, 50, 32, 32, $BS_ICON)
GUICtrlSetImage(-1, 'Bitmap_181.ico')
GUICtrlSetOnEvent($Btnton2_2, '_GuiMsg')
While 1
Sleep(250)
WEnd
Func _GuiMsg()
Switch @GUI_CtrlId
Case -3
Switch @GUI_WinHandle
Case $MyGui1
Exit
Case $MyGui2
__GUICtrl_SOH_ReleaseResources()
GUISetState(@SW_ENABLE, $MyGui1)
GUISetState(@SW_HIDE, $MyGui2)
EndSwitch
Case $Btnton1_1
GUISetState(@SW_SHOW, $MyGui2)
GUISetState(@SW_DISABLE, $MyGui1)
_GUICtrl_SetOnHover($Btnton2_1, '_Hover_Proc', '_Leave_Hover_Proc', 'PrimaryDown_Proc', 'PrimaryUp_Proc')
_GUICtrl_SetOnHover($Btnton2_2, '_Hover_Proc', '_Leave_Hover_Proc', 'PrimaryDown_Proc', 'PrimaryUp_Proc')
Case $Btnton2_1
GUICtrlSetImage($Btnton2_1, 'Bitmap_187.BMP')
;~ MsgBox(0, 0, '响应鼠标点击')
Case $Btnton2_2
GUICtrlSetImage($Btnton2_2, 'Bitmap_187.ico')
;~ MsgBox(0, 0, '响应鼠标点击2')
EndSwitch
EndFunc ;==>_GuiMsg
Func _Hover_Proc($iCtrlID)
Switch $iCtrlID
Case $Btnton2_1
GUICtrlSetImage($Btnton2_1, 'Bitmap_186.bmp')
Case $Btnton2_2
GUICtrlSetImage($Btnton2_2, 'Bitmap_186.ico')
EndSwitch
EndFunc ;==>_Hover_Proc
Func _Leave_Hover_Proc($iCtrlID)
Switch $iCtrlID
Case $Btnton2_1
GUICtrlSetImage($Btnton2_1, 'Bitmap_181.bmp')
Case $Btnton2_2
GUICtrlSetImage($Btnton2_2, 'Bitmap_181.ico')
EndSwitch
EndFunc ;==>_Leave_Hover_Proc 好点了,不过点击查看按钮,弹出对话框,然后再把对话框关闭掉,”查看“ 按钮无框边,鼠标经过才显示出框边 是啊!所以我刚刚说不知道你完整的程序是什么样的。 我是想点击动态按钮能够弹出设置的gui窗口 回复 19# qsy666888
回到你原来的。
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include '_dButton.au3'
Opt("GUIOnEventMode", 1)
zhugui()
Global $Gui, $btn_ok, $btn_ex
Func xshi()
Global $Gui = GUICreate("动态按钮he控件指示", 300, 100, -1, -1)
GUISetOnEvent($GUI_EVENT_CLOSE, "GuiClose")
Global $ex = GUICtrlCreateLabel(" X ", 280, 2, 17, 12)
WinSetTrans($Gui, "", 255);必须要使用此函数,即使透明值设置为255,也就是不透明都可以,但是不能没有
Global $btn_ok = GUICtrlCreateButton("", 50, 47, 100, 26, $BS_BITMAP)
GUICtrlSetImage(-1, "Bitmap_181.bmp")
GUICtrlSetCursor(-1, 0)
Global $btn_ex = GUICtrlCreateButton("", 180, 44, 32, 32, $BS_ICON)
GUICtrlSetImage(-1, "Bitmap_181.ico")
GUICtrlSetCursor(-1, 0)
Global $Pic1 = GUICtrlCreatePic("bg.jpg", 0, 0, 300, 100, $WS_CLIPSIBLINGS)
GUICtrlCreateLabel("", 0, 0, 300, 100, $WS_CLIPSIBLINGS, $GUI_WS_EX_PARENTDRAG)
Global $label = GUICtrlCreateLabel("当鼠标处于本行文字上方,将进行提示", 50, 15)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(-1, 0xff0000)
GUISetState(@SW_SHOW)
EndFunc ;==>xshi
While 1
Sleep(250)
_dButton($Gui, $btn_ok, "Bitmap_181.bmp", "Bitmap_186.bmp", "Bitmap_187.bmp");如果去掉,但达不到效果
_dButton($Gui, $btn_ex, "Bitmap_181.ico", "Bitmap_186.ico", "Bitmap_187.ico");这两行
WEnd
Func GuiClose()
Exit
EndFunc ;==>GuiClose
Func zhugui()
Global $Form1 = GUICreate("Form1", 475, 203, 192, 124)
GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
Global $Button1 = GUICtrlCreateButton("显 示", 128, 88, 185, 41)
GUICtrlSetOnEvent($Button1, "xianshi")
GUISetState()
EndFunc ;==>zhugui
Func Form1Close()
Exit
EndFunc ;==>Form1Close
Func xianshi()
xshi()
EndFunc ;==>xianshi
回复 20# 水木子
谢谢你,非常感谢 本帖最后由 水木子 于 2014-5-29 10:39 编辑
回复 21# qsy666888
没什么,是我把问题搞复杂了。
最开始我为什么要改你原来的,因为我觉得这样循环检查,效率很差。
没想到我这个方法在WIN8里还存在不少问题。 回复 22# 水木子
大侠,为什么我一点别的窗口或桌面,也就是说点击不在本gui窗口区域外,就自动退出,下面是提示
"C:\Users\qinshiyong\Desktop\While??\While??\_dButton.au3" (23) : ==> ??????????.:
If $mouse = $btn_ctrlid Then
If $mouse^ ERROR 回复 23# qsy666888
貌似是你这个_dButton.au3 有点小问题,可能还需要加一些判断,容错。 哦,能帮我改改吗,大侠 e,学习学习,露个脸。 学习一下。。。。 学习了,超版好厉害
页:
1
[2]