 |
AutoHotkey Community Wir helfen uns gegenseitig aus der Patsche
|
| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
AGermanUser
Anmeldedatum: 25.10.2005 Beiträge: 164
|
Verfasst am: Mo Feb 26, 2007 8:00 pm Titel: Hyperlinks in GUIs |
|
|
Nachdem ich letztens von einem User im englischen Forum gefragt wurde, wie man in einem GUI mehrere Hyperlinks anzeigen lassen kann, habe ich shimanovs Code etwas überarbeitet.
Für die Hyperlinks wird ein normales Textcontrol verwendet. Die Schriftfarbe wird linktypisch auf blau gesetzt, und sobald man mit der Maus über das Control fährt, ändert sich der Mauszeiger zu einer Hand, und der Text wird unterstrichen.
Damit das ganze richtig funktioniert, muss die zugewiesene Variable des Controls mit "URL" beginnen.
Beispiel:
| Code: | Gui, Margin, 5, 5
Gui, Add, Text, xm ym, Multiple URLs in one GUI
Gui, Add, Text, xp+8 yp+25 cBlue gLink1 vURL_Link1, www.autohotkey.com
Gui, Add, Text, xp yp+20 cBlue gLink2 vURL_Link2, de.autohotkey.com
Gui, Add, Text, xp yp+20 cBlue gLink3 vURL_Link3, www.google.com
Gui, Add, Text, xp yp+20 cBlue gLink4 vURL_Link4, www.msdn.com
Gui, Font, norm
Gui, Show,, URL
; Retrieve scripts PID
Process, Exist
pid_this := ErrorLevel
; Retrieve unique ID number (HWND/handle)
WinGet, hw_gui, ID, ahk_class AutoHotkeyGUI ahk_pid %pid_this%
; Call "HandleMessage" when script receives WM_SETCURSOR message
WM_SETCURSOR = 0x20
OnMessage(WM_SETCURSOR, "HandleMessage")
; Call "HandleMessage" when script receives WM_MOUSEMOVE message
WM_MOUSEMOVE = 0x200
OnMessage(WM_MOUSEMOVE, "HandleMessage")
Return
GuiClose:
ExitApp
;######## End of GUI ###########################################################
;######## GUI glabels ##########################################################
Link1:
Run, http://www.autohotkey.com/forum
Return
Link2:
Run, http://de.autohotkey.com
Return
Link3:
Run, http://www.google.com
Return
Link4:
Run, http://www.msdn.com
Return
;######## End Of GUI glabels ###################################################
;######## Function #############################################################
HandleMessage(p_w, p_l, p_m, p_hw)
{
global WM_SETCURSOR, WM_MOUSEMOVE,
static URL_hover, h_cursor_hand, h_old_cursor, CtrlIsURL, LastCtrl
If (p_m = WM_SETCURSOR)
{
If URL_hover
Return, true
}
Else If (p_m = WM_MOUSEMOVE)
{
; Mouse cursor hovers URL text control
StringLeft, CtrlIsURL, A_GuiControl, 3
If (CtrlIsURL = "URL")
{
If URL_hover=
{
Gui, Font, cBlue underline
GuiControl, Font, %A_GuiControl%
LastCtrl = %A_GuiControl%
h_cursor_hand := DllCall("LoadCursor", "uint", 0, "uint", 32649)
URL_hover := true
}
h_old_cursor := DllCall("SetCursor", "uint", h_cursor_hand)
}
; Mouse cursor doesn't hover URL text control
Else
{
If URL_hover
{
Gui, Font, norm cBlue
GuiControl, Font, %LastCtrl%
DllCall("SetCursor", "uint", h_old_cursor)
URL_hover=
}
}
}
}
;######## End Of Functions ##################################################### |
_________________ Gruß
AGermanUser a.k.a. AGU
Moderator |
|
| Nach oben |
|
 |
Chucky
Anmeldedatum: 07.01.2006 Beiträge: 614 Wohnort: Powerland
|
Verfasst am: Mo Feb 26, 2007 10:46 pm Titel: |
|
|
Très chic!
__________________________________________
Created with BBCodeWriter 6.6 - the one and only  |
|
| Nach oben |
|
 |
haichen
Anmeldedatum: 10.06.2007 Beiträge: 78
|
Verfasst am: Fr Apr 11, 2008 10:30 am Titel: |
|
|
Danke für das Skript!
Und mit diesen Änderungen muß man die Links kein zweites mal schreiben, und email geht auch.
| Code: | ...
Gui, Add, Text, xp yp+20 cBlue gLinks vURL_Link4, www.msdn.com
Gui, Add, Text, xp yp+20 cBlue gLinks vURL_Link5, x@y.de
... |
| Code: | ;######## GUI glabels ##########################################################
Links:
Gui,Submit, NoHide
loop, 5
{
GuiControlGet, URL_Link%a_index%
IfInString, URL_Link%a_index% , @
URL_Link%a_index% := "mailto:" . URL_Link%a_index%
If (A_GuiControl="URL_Link" a_index)
Run,% URL_Link%a_index%
}
Return
;######## End Of GUI glabels ###################################################
|
|
|
| Nach oben |
|
 |
Ripp3r]D3[
Anmeldedatum: 11.11.2007 Beiträge: 411 Wohnort: Altenburg\Kernel32.dll
|
Verfasst am: Fr Apr 11, 2008 7:18 pm Titel: |
|
|
Vielleicht kann man das jetzt mit dem credit post verbinden?
PS:Echt nice ^^ _________________
ResistantX:
"...In deren Köpfen läuft das selbe Programm welches auch bei den früheren Jahrgängen lief! Ich bin der Virus der diese Programme zerstören will..." |
|
| Nach oben |
|
 |
haichen
Anmeldedatum: 10.06.2007 Beiträge: 78
|
Verfasst am: Fr Apr 11, 2008 7:24 pm Titel: |
|
|
Deshalb gibt es die beiden Beiträge von mir. |
|
| Nach oben |
|
 |
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|