Deutsches AutoHotkey Homepage AutoHotkey Community
Wir helfen uns gegenseitig aus der Patsche
 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Hyperlinks in GUIs

 
Neues Thema eröffnen   Neue Antwort erstellen    AutoHotkey Community Foren-Übersicht -> Skripte & Funktionen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
AGermanUser



Anmeldedatum: 25.10.2005
Beiträge: 164

BeitragVerfasst am: Mo Feb 26, 2007 8:00 pm    Titel: Hyperlinks in GUIs Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Chucky



Anmeldedatum: 07.01.2006
Beiträge: 614
Wohnort: Powerland

BeitragVerfasst am: Mo Feb 26, 2007 10:46 pm    Titel: Antworten mit Zitat

Très chic!

__________________________________________
Created with BBCodeWriter 6.6 - the one and only Very Happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
haichen



Anmeldedatum: 10.06.2007
Beiträge: 78

BeitragVerfasst am: Fr Apr 11, 2008 10:30 am    Titel: Antworten mit Zitat

Danke für das Skript! Very Happy
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
Benutzer-Profile anzeigen Private Nachricht senden
Ripp3r]D3[



Anmeldedatum: 11.11.2007
Beiträge: 411
Wohnort: Altenburg\Kernel32.dll

BeitragVerfasst am: Fr Apr 11, 2008 7:18 pm    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
haichen



Anmeldedatum: 10.06.2007
Beiträge: 78

BeitragVerfasst am: Fr Apr 11, 2008 7:24 pm    Titel: Antworten mit Zitat

Wink Deshalb gibt es die beiden Beiträge von mir.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    AutoHotkey Community Foren-Übersicht -> Skripte & Funktionen Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
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