smooth 发表于 2009-9-25 19:11:50

[已解决]请问如何在GUI控件上插入超链接?

本帖最后由 smooth 于 2010-11-9 21:01 编辑

假如以下是我的GUI代码:GUICtrlCreateLabel("访问鼎盛中国博客", 280, 323, 344, 24)
GUICtrlSetFont(-1, 10, 400)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateGroup("", -99, -99, 1, 1)如何才能做到,点击“访问鼎盛中国博客”的时候,自动打开我指定的网页“www.***.***.com”?

以下代码是我在网上查询的资料,但是琢磨了一天,都不知道怎么用,有达人指点下吗?;$Label1 = GUICtrlCreateLabel("Label1", 39, 327, 36, 17)
;GUICtrlSetFont(-1, 8, 400, 4, "MS Sans Serif")
;GUICtrlSetOnEvent(-1, "Label1Click")

lpxx 发表于 2009-9-25 19:25:11

#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 201, 81, 192, 124)
$Label1 = GUICtrlCreateLabel("访问鼎盛中国博客", 88, 40, 100, 17)
GUICtrlSetCursor (-1, 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Label1
                        ShellExecute("http://www.autoitx.com")

        EndSwitch
WEnd

smooth 发表于 2009-9-25 19:50:07

本帖最后由 smooth 于 2009-9-25 19:53 编辑

你的代码是可以的。但是放到我的代码中就不行了。而且我的代码原来的功能都不行了。在研究中。

gto250 发表于 2009-9-25 21:12:57

Case $Label1
ShellExecute("http://www.autoitx.com")
不就只加了这么一句嘛,我看也没有什么问题,怎么楼主的代码就不能用了呢,楼主用的不会是事件模式吧!


http://lwc.nhome.cn/code/showip.asp

smooth 发表于 2009-9-25 21:52:56

Case $Label1
ShellExecute("http://www.autoitx.com")
不就只加了这么一句嘛,我看也没有什么问题,怎么楼主的代码就不能用了呢,楼主用的不会是事件模式吧!


http://lwc.nhome.cn/code/showip.asp
gto250 发表于 2009-9-25 21:12 http://www.autoitx.com/images/common/back.gif
我上传代码,你帮我看下好吗?

gto250 发表于 2009-9-25 22:53:04

你传呢!



http://lwc.nhome.cn/code/showip.asp

smooth 发表于 2009-9-25 23:42:39

本帖最后由 smooth 于 2009-9-27 10:04 编辑

……
;
GUICtrlCreateLabel("访问鼎盛中国博客", 280, 323, 344, 24)
GUICtrlSetFont(-1, 10, 400)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateGroup("", -99, -99, 1, 1)

Global $vPartEdge, $vPartText
$vPartEdge = 200
$vPartEdge = 400
$vPartText = '今天日期是:' & @YEAR & '年 ' & @MON & '月 ' & @MDAY & '日'
$vPartText = 'Coded by 鼎盛中国,QQ:93737788'
_GUICtrlStatusBar_Create($Form, $vPartEdge, $vPartText)

_Set(GUICtrlRead($Date))
GUISetState(@SW_SHOW)

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        _UnLoadSkin($hSkinDll)
                        FileDelete($SkinFile)
                        FileDelete($SkinDll)
                        Exit
                Case $Date
                        _Set(GUICtrlRead($Date))
                        _Write($IniFile, 'Baby', 'PregnantDate', GUICtrlRead($Date))
        EndSwitch
WEnd
……

afan 发表于 2009-9-26 00:01:14

修改这一段即可
GUICtrlCreateLabel("祝:母子平安,阖家幸福!", 39, 320, 200, 24) ;修改
GUICtrlSetFont(-1, 12, 400)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateGroup("", -99, -99, 1, 1)
;
$lj = GUICtrlCreateLabel("访问鼎盛中国博客", 280, 323, 344, 24) ;修改
GUICtrlSetFont(-1, 10, 400)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateGroup("", -99, -99, 1, 1)

Global $vPartEdge, $vPartText
$vPartEdge = 200
$vPartEdge = 400
$vPartText = '今天日期是:' & @YEAR & '年 ' & @MON & '月 ' & @MDAY & '日'
$vPartText = 'Coded by 鼎盛中国,QQ:93737788'
_GUICtrlStatusBar_Create($Form, $vPartEdge, $vPartText)

_Set(GUICtrlRead($Date))
GUISetState(@SW_SHOW)

While 1
      $nMsg = GUIGetMsg()
      Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        _UnLoadSkin($hSkinDll)
                        FileDelete($SkinFile)
                        FileDelete($SkinDll)
                        Exit
                Case $Date
                        _Set(GUICtrlRead($Date))
                        _Write($IniFile, 'Baby', 'PregnantDate', GUICtrlRead($Date))
                Case $lj ;增加
                        ShellExecute("http://www.autoitx.com") ;改为自己的链接
      EndSwitch
WEnd

smooth 发表于 2009-9-26 00:08:08

能说说原理吗?我都改了一天都改不成功。

lpxx 发表于 2009-9-26 00:37:47

总统先生(993839793) 19:04:01
别人给的例子总是不能简约写,实际上一个例子里面真正能教会你的其实就两3句,其它都是碍眼的东西。一个例子之所以变得难懂就是因为添加了太多的碍眼的东西。
总统先生(993839793) 19:10:08
许多例子都是这样的,如果你把这些所有垃圾信息都删除,那么你就很快就找到你需要的答案。这些垃圾是否就是垃圾呢?从完整的程序来考虑,这些包括各种功能及异常处理的程序,其实是不能称之为垃圾的,但是作为学习,这就东西就大大阻碍了你的学习进度,你不能在那么多语句中找到那么一个最关键的语句。所以当一些例子子放出来的时候,你就会大呼,复杂难懂。

afan 发表于 2009-9-26 09:39:30

能说说原理吗?我都改了一天都改不成功。
smooth 发表于 2009-9-26 00:08 http://www.autoitx.com/images/common/back.gif

很简单,改为200的那个Label控件原来太长了,盖住了右边你要点击的Label控件...
估计你的问题就出在这里

smooth 发表于 2009-9-26 09:47:32

本帖最后由 smooth 于 2009-9-26 09:54 编辑



很简单,改为200的那个Label控件原来太长了,盖住了右边你要点击的Label控件...
估计你的问题就出在这里
afan 发表于 2009-9-26 09:39 http://www.autoitx.com/images/common/back.gif

我的意思不是这个。我是说,为什么要用一个循环来。
用:
$Label1 = GUICtrlCreateLabel("Label1", 39, 327, 36, 17)
case $Label1
sellexecute(www.autoitx.com)

这样不行吗?

afan 发表于 2009-9-26 09:58:30

你是用的消息循环模式,当然就得用循环获得点击的消息

smooth 发表于 2009-9-26 10:08:15

你是用的消息循环模式,当然就得用循环获得点击的消息
afan 发表于 2009-9-26 09:58 http://www.autoitx.com/images/common/back.gif

明白了。那如果用事件模式,是不是简单点呢?
你会吗?

afan 发表于 2009-9-26 10:15:57

本帖最后由 afan 于 2009-9-26 10:18 编辑

事件模式就是你一楼琢磨了半天的那段,关键代码 GUICtrlSetOnEvent(-1, "Label1Click")
脚本前面加一句 Opt("GUIOnEventMode", 1) ,消息模式随之无效。(即关闭窗口等消息均无效,需重新以上面所说的关键代码格式重写事件)
后面还需要写 Functions 函数,如
Func Label1Click()
       ShellExecute("http://www.autoitx.com")
Endfunc
页: [1] 2 3
查看完整版本: [已解决]请问如何在GUI控件上插入超链接?