Español
Fuente/ Codesnippets

Control Hyperlink Static

 
Hyperlink Static Control de Andreas Miethe
KompilierenMarcaSeparación
#############################
XProfan
#############################
Author : Andreas Miethe
Oktober 2003
#############################
Thema : Window-Prozedur
#############################
 $H windows.ph
 $H structs.ph
 $H messages.ph
 $H shellapi.ph
Struct Point = ~Point
Declare OldWindowProc&,Button&,Ende&
Declare Hyperlink&,HyperMail&,Google&,GEdit&,hfnormal&,hfmouse&
Declare normalcursor&,mousecursor&
Declare highlighted&,Brush&
Declare Point#
Dim Point#,Point
Def HiWord(1) Div&(&(1),$10000)
Def LoWord(1) And(&(1),$FFFF)
set(FastMode,1)
----------------------------------------------------------------------
benötigte Cursor und Fonts laden
----------------------------------------------------------------------
normalcursor& = ~LoadCursor(0,~IDC_ARROW)normaler Mauszeiger
mousecursor&  = ~LoadCursor(0, 32649)Hand
hfnormal& = ~createfont(13,0,0,0,~FW_DONTCARE,0,1,0,0,0,0,0,0,Verdana)normaler Hyperlink-Font
hfmouse&  = ~createfont(13,0,0,0,~FW_BOLD,0,1,0,0,0,0,0,0,Verdana)hightlight Hyperlink-Font
----------------------------------------------------------------------

Proc SetColor

    ----------------------------------------------------------------------
    Hintergrundfarbe und Textfarbe für Static-Controls ändern
    ----------------------------------------------------------------------
    Parameters Textcolor&,BackColor&,wParam&

    If Brush&

        ~DeleteObject(Brush&)

    Endif

    Brush& = ~CreateSolidBrush(BackColor&)
    ~SetBkMode(wParam&, ~TRANSPARENT)
    ~SetTextColor(wParam&,Textcolor&)
    return Brush&

Endproc

Proc WindowProc

    ----------------------------------------------------------------------
    Fenster-Callback
    ----------------------------------------------------------------------
    Parameters Wnd&, Msg&, wParam&, lParam&

    If Msg& = ~WM_LBUTTONDOWN

        ~GetCursorPos(Point#)Cursorposition ermittel
        ~MapWindowPoints(0,wnd&,Point#,1)Cursorposition umrechnen auf Fenster-Koordinaten

        If ~ChildWindowFromPoint(wnd&,Point#.x&,Point#.Y&) = Hyperlink&ist das Control unter der Maus der Hyperlink ?

            ShellExec(http:\www.andreas-miethe.de,open,~SW_SHOWNORMAL)
            Return 0

        Endif

        If ~ChildWindowFromPoint(wnd&,Point#.x&,Point#.Y&) = Hypermail&

            ShellExec(mailto: andreas@andreas-miethe.de?Subject=Testmail&body=Superteil,open,~SW_SHOWNORMAL)
            Return 0

        Endif

        If ~ChildWindowFromPoint(wnd&,Point#.x&,Point#.Y&) = Google&

            ShellExec(http://www.google.com/search?hl=en&ie=ISO-8859-1&q= + GetText$(GEdit&),open,~SW_SHOWNORMAL)
            Return 0

        Endif

    Endif

    If Msg& = ~WM_MOUSEMOVE

        ~GetCursorPos(Point#)
        ~MapWindowPoints(%Desktop,wnd&,Point#,1)

        If OR(OR(~ChildWindowFromPoint(wnd&,Point#.x&,Point#.Y&) = Hyperlink&,~ChildWindowFromPoint(wnd&,Point#.x&,Point#.Y&) = HyperMail&),

            ~ChildWindowFromPoint(wnd&,Point#.x&,Point#.Y&) = Google&)
            ~SetCursor(mousecursor&)

            If ~ChildWindowFromPoint(wnd&,Point#.x&,Point#.Y&) = Hyperlink&

                If highlighted& = 0

                    ~SendMessage(Hyperlink&,~WM_SETFONT,hfmouse&,1)
                    highlighted& = 1
                    Return 0

                EndIf

            Endif

            If ~ChildWindowFromPoint(wnd&,Point#.x&,Point#.Y&) = HyperMail&

                If highlighted& = 0

                    ~SendMessage(HyperMail&,~WM_SETFONT,hfmouse&,1)
                    highlighted& = 1
                    Return 0

                Endif

            Endif

            If ~ChildWindowFromPoint(wnd&,Point#.x&,Point#.Y&) = Google&

                If highlighted& = 0

                    ~SendMessage(Google&,~WM_SETFONT,hfmouse&,1)
                    highlighted& = 1
                    Return 0

                Endif

            Endif

        Else

            If highlighted& = 1

                ~SendMessage(Hyperlink&,~WM_SETFONT,hfnormal&,1)
                ~SendMessage(HyperMail&,~WM_SETFONT,hfnormal&,1)
                ~SendMessage(Google&,~WM_SETFONT,hfnormal&,1)
                ~SetCursor(normalcursor&)
                highlighted& = 0
                Return 0

            EndIf

        EndIf

    Endif

    If Msg& = ~WM_CTLCOLORSTATICMuss ein Static neugezeichnet werden ?

        If highlighted& = 1

            Return SetColor(rgb(128,0,128),~GetSysColor(~COLOR_BTNFACE),wParam&)

        Endif

    Endif

    alle Messages die nicht behandelt wurden an die Original-Prozedur weiterleiten
    return ~CallWindowProc(OldWindowProc&,Wnd&, Msg&, WParam&, LParam&)

EndProc

CLS ~GetSysColor(~COLOR_BTNFACE)
----------------------------------------------------------------------
Controls anlegen
----------------------------------------------------------------------
Button& = CreateButton(%hwnd,Ende,10,120,80,24)
Sendmessage(Button&,~WM_SETFONT,~GetStockObject(~DEFAULT_GUI_FONT),1)
Hyperlink& = CreateText(%hwnd,Homepage,10,10,80,20)
Sendmessage(Hyperlink&,~WM_SETFONT,hfnormal&,1)
HyperMail& = CreateText(%hwnd,Mail,10,40,80,20)
Sendmessage(HyperMail&,~WM_SETFONT,hfnormal&,1)
Google& = CreateText(%hwnd,Google-Suche :,10,70,110,20)
Sendmessage(Google&,~WM_SETFONT,hfnormal&,1)
GEdit& = CreateEdit(%hwnd,Profan,130,66,200,20)
Sendmessage(GEdit&,~WM_SETFONT,~GetStockObject(~DEFAULT_GUI_FONT),1)
----------------------------------------------------------------------
----------------------------------------------------------------------
Fenster-Prozedur austauschen
----------------------------------------------------------------------
OldWindowProc& = ~SetWindowLong(%hwnd,~GWL_WNDPROC, ProcAddr(WindowProc,4))
----------------------------------------------------------------------

WhileNot Ende&

    WaitInput

    If GetFocus(Button&)

        ~DeleteObject(hfnormal&)
        ~DeleteObject(hfmouse&)
        Dispose Point#
        Ende& =s2>= 1

    Endif

EndWhile

Salve, IF.
 
01.07.2005  
 



Zum Quelltext


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

2.467 Views

Untitledvor 0 min.
H.Brill01.07.2021
Andre Rohland08.02.2018
p.specht24.07.2017
Ernst10.04.2014
Más...

Themeninformationen

Dieses Thema ha 1 subscriber:

iF (1x)


Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie