yeqing880 发表于 2009-12-31 16:18:42

关于图片控键的更新

本帖最后由 yeqing880 于 2010-1-2 14:41 编辑

#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Local $Pic2
Opt("GUIOnEventMode", 1)
#Region ### START Koda GUI section ### Form=
$Form3 = GUICreate("窗体1", 550, 349, 302, 218)
GUISetOnEvent($GUI_EVENT_CLOSE, "doyet")
$Pic1 = GUICtrlCreatePic("C:\Users\叶青\Desktop\jwws\皮肤\1.jpg", 0, 72, 548, 84, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
GUIctrlSetOnEvent($Pic1,"doyet")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        Sleep(100)
WEnd

func doyet()
        Switch @GUI_CtrlId
                Case $GUI_EVENT_CLOSE               
                Exit
        case $Pic1
                GUICtrlDelete($pic1)
                $Pic2 = GUICtrlCreatePic("1\0021.JPG", 0, 72, 548, 84, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
      GUIctrlSetOnEvent($Pic2,"doyet")
        case $Pic2       
                Exit
                EndSwitch
               
        EndFunc


请各位帮我看下。。现在的问题是pic1删除以后,我重建了一个pic2,但是点击事件注册出现了错误。不能正常的执行pic2的exit程度


        已经解决 ..谢谢大侠对我的帮助..真心感谢

sanmoking 发表于 2009-12-31 17:58:28

本帖最后由 sanmoking 于 2009-12-31 18:04 编辑

#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
$test = 0                                       ;---------这个变量当一个标志用,你看后边的注释就会明白了。。。你那种思路绕路远了
Opt("GUIOnEventMode", 1)
#Region ### START Koda GUI section ### Form=
$Form3 = GUICreate("窗体1", 550, 349, 302, 218)
GUISetOnEvent($GUI_EVENT_CLOSE, "doyet")
$Pic1 = GUICtrlCreatePic("1.JPG", 0, 72, 548, 84, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
GUICtrlSetOnEvent($Pic1, "doyet")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
      Sleep(100)
WEnd
Func doyet()
      If $test = 0 Then                                       ;---------如果没有更换过图片
                GUICtrlSetImage($Pic1, "2.JPG")                                       ;---------就更换
               GUICtrlSetPos ($Pic1, 20, 20, 400,120 )               ;---------如果两张图片不一样大,就用修改下控件的大小位置好了
               $test = 1                                       ;---------顺便把那个标志改为更换过
      Else                                       ;---------如果更换过图片
                Exit                                       ;---------就退出咯
      EndIf                                       ;---------就这么简单。。。不用去删除空间在新建控件什么的
EndFunc   ;==>doyet

sanmoking 发表于 2009-12-31 18:04:04

哪位给这么帅气的答案加个花呗。。。。。

sanmoking 发表于 2009-12-31 18:10:44

afan花真多啊,好崇拜你啊。。。。
每次要花,都是你给的哦噢噢噢噢噢噢噢。。。。。

yeqing880 发表于 2009-12-31 18:52:11

#include
#include
#include
$test = 0                                       ;---------这个变量当 ...
sanmoking 发表于 2009-12-31 17:58 http://www.autoitx.com/images/common/back.gif



谢谢您的帮助...主要是我开始在论坛里找了一下..好像听说GUIctrlimage 不能用才迫不得已用这招的

yeqing880 发表于 2009-12-31 18:56:39

但是还有一个问题..如果我不光只是换这张图片..我还要加图片的话..注册事件会不会有问题呢

sanmoking 发表于 2009-12-31 19:06:32

能说具体点否?
。。。循环创建控件???。。。。
明天给你写个简单点的例子,今天太晚了,一会有事。。。

yeqing880 发表于 2009-12-31 20:51:44

比如说..我现在先删除了一张图片...在加入两张..但两张图片都要注册成事件.这样子...


麻烦你了..明天见

sanmoking 发表于 2009-12-31 21:50:18

如果数目不确定,那只能用循环创建控件的办法。。。。如果数目已确定了,那方法就多了。。。。具体还得看你的源码,靠这样说,没法弄。。。。

yeqing880 发表于 2010-1-2 14:24:51

我现在面临的问题是这样的..

首先.界面上是一张大的图片..一个大的带有连接的图片..

当用户点击大图片后,大图片消失,然后进入下一级菜单..这一级菜单又包括了N个小的带连接的图片

而且所有的小的图片都是有相关的功能的..

不知我像这样叙述大侠能否明白

yeqing880 发表于 2010-1-2 14:40:17

找到解决方法了..我用的方法是先把所有的图片控键建立,事件注册后...用GUICtrlSetState隐藏控件..用的时候在显示出来..

sanmoking 发表于 2010-1-4 11:23:40

找到解决方法了..我用的方法是先把所有的图片控键建立,事件注册后...用GUICtrlSetState隐藏控件..用 ...
yeqing880 发表于 2010-1-2 14:40 http://www.autoitx.com/images/common/back.gif


我没仔细看楼主的东西,给个我的思路吧。。。

Dim $Radiooo
For $ioop = 1 To UBound ($usernameall)-1
$Radiooo[$ioop] = GUICtrlCreateRadio($usernameall[$ioop], 15, $ioop*20+8, 100, 17)
GUICtrlSetOnEvent(-1, "lastClick")
Next
类似这样子循环创建控件,然后在注册事件的函数里用上一次点击控件的句柄@GUI_CtrlId来识别。。

sanmoking 发表于 2010-1-4 11:29:06

下面

本帖最后由 sanmoking 于 2010-1-4 11:31 编辑

另外给你个窗体尺寸的思路,根据不同的控件数量,窗体大小也会不一样:
下面代码仅是一部分,不能直接运行的。

Dim $Radiooo
$Form0 = GUICreate("请选择", 160, UBound($usernameall)*20+50)
GUISetOnEvent($GUI_EVENT_CLOSE, "Form0Close")
If UBound ($usernameall) > 1 Then
$Group0 = GUICtrlCreateGroup("当前登录用户", 8, 8, 143, UBound($usernameall)*20+5)
For $ioop = 1 To UBound ($usernameall)-1
$Radiooo[$ioop] = GUICtrlCreateRadio($usernameall[$ioop], 15, $ioop*20+8, 100, 17)
Next
GUICtrlSetState($Radiooo, $GUI_CHECKED)
GUICtrlCreateGroup("", -99, -99, 1, 1)
Else
$Group0 = GUICtrlCreateGroup("没有发现用户", 8, 8, 143, UBound($usernameall)*20+5)
GUICtrlCreateGroup("", -99, -99, 1, 1)
EndIf      
$Buttonn1 = GUICtrlCreateButton("刷新", 8, UBound($usernameall)*20+18, 69, 25)
GUICtrlSetOnEvent(-1, "Buttonn1Click")
$Buttonn2 = GUICtrlCreateButton("确定", 83,UBound($usernameall)*20+18, 69, 25)
GUICtrlSetOnEvent(-1, "Buttonn2Click")
GUISetState(@SW_SHOW)
页: [1]
查看完整版本: 关于图片控键的更新