找回密码
 加入
搜索
查看: 2628|回复: 12

关于图片控键的更新

  [复制链接]
发表于 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程度


        已经解决 ..谢谢大侠对我的帮助..真心感谢
发表于 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

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

发表于 2009-12-31 18:04:04 | 显示全部楼层
哪位给这么帅气的答案加个花呗。。。。。
发表于 2009-12-31 18:10:44 | 显示全部楼层
afan花真多啊,好崇拜你啊。。。。
每次要花,都是你给的哦噢噢噢噢噢噢噢。。。。。
 楼主| 发表于 2009-12-31 18:52:11 | 显示全部楼层
#include
#include
#include
$test = 0                                       ;---------这个变量当 ...
sanmoking 发表于 2009-12-31 17:58




谢谢您的帮助...主要是我开始在论坛里找了一下..好像听说GUIctrlimage 不能用才迫不得已用这招的
 楼主| 发表于 2009-12-31 18:56:39 | 显示全部楼层
但是还有一个问题..如果我不光只是换这张图片..我还要加图片的话..注册事件会不会有问题呢
发表于 2009-12-31 19:06:32 | 显示全部楼层
能说具体点否?
。。。循环创建控件???。。。。
明天给你写个简单点的例子,今天太晚了,一会有事。。。
 楼主| 发表于 2009-12-31 20:51:44 | 显示全部楼层
比如说..我现在先删除了一张图片...在加入两张..但两张图片都要注册成事件.这样子...


麻烦你了..明天见
发表于 2009-12-31 21:50:18 | 显示全部楼层
如果数目不确定,那只能用循环创建控件的办法。。。。如果数目已确定了,那方法就多了。。。。具体还得看你的源码,靠这样说,没法弄。。。。
 楼主| 发表于 2010-1-2 14:24:51 | 显示全部楼层
我现在面临的问题是这样的..

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

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

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

不知我像这样叙述大侠能否明白
 楼主| 发表于 2010-1-2 14:40:17 | 显示全部楼层
找到解决方法了..我用的方法是先把所有的图片控键建立,事件注册后...用GUICtrlSetState隐藏控件..用的时候在显示出来..
发表于 2010-1-4 11:23:40 | 显示全部楼层
找到解决方法了..我用的方法是先把所有的图片控键建立,事件注册后...用GUICtrlSetState隐藏控件..用 ...
yeqing880 发表于 2010-1-2 14:40



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

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

评分

参与人数 1金钱 +15 贡献 +1 收起 理由
afan + 15 + 1

查看全部评分

发表于 2010-1-4 11:29:06 | 显示全部楼层

下面

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

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

Dim $Radiooo[100]
$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[1], $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)
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-22 15:30 , Processed in 0.082455 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表