Español
Incluye

Standard TooltipsEverywhere - Tooltip-Incluir para Tooltips en cada Ventana-Zona

 

Findus
Jonathan (27.02.2013)
¡Hola,

Tal vez puede sí alguien gebrauchen: Un Incluir, con el uno en cada beliebigen Ventana encima cada beliebigen Zona (relativ (0 a 1) y absolut (Pixel)) una Tooltip erzeugen kann, incluso mehrzeilig.

Hier Incluya el:
'TOOLTIPS EVERYWHERE - TOOLTIP-INCLUDE FÜR TOOLTIPS AUF JEGLICHEN FENSTER-BEREICHEN
'==================================================================================
'
'(c) 2013 Jonathan
'Diese Incluir darf frei verwendet y modifiziert voluntad. Um una Referencia en el
'ursprünglichen Autor se gebeten, zumindest en el Quellcode.
Struct TTE_lpPoint = X&, Y&
'{GLOBALE VARIABLEN
Declarar TTE_Tooltip_hWnd&'Das Tooltip-Ventana
Declarar TTE_Tooltip_text$[]'Texto des Tooltips [X]
Declarar TTE_Tooltip_grp&[]'Gruppe des Tooltips [X]
Declarar TTE_Tooltip_tWnd&[]'Ventana des Tooltips [X]
Declarar TTE_Tooltip_xpos![]'X-Position des Tooltip-Bereichs [X]
Declarar TTE_Tooltip_ypos![]'Y-Position des Tooltip-Bereichs [X]
Declarar TTE_Tooltip_xsz![]'X-Größe des Tooltip-Bereichs [X]
Declarar TTE_Tooltip_ysz![]'Y-Größe des Tooltip-Bereichs [X]
Declarar TTE_Tooltip_isRelative%[]'Relative Koordinaten para Tooltip [X]?
Declarar TTE_Tooltip_aktnum&'Nummer des aktuell sichtbaren Tooltips
Declarar TTE_Tooltip_aktmaxgrp&'Maximale vergebene Gruppen-ID
Declarar TTE_DisplayFont$'Nichtproportionaler Font
Declarar TTE_TempStr$
TTE_Tooltip_aktmaxgrp& = -1
TTE_Tooltip_aktnum& = -1
'}
'{INITIALISIEREN DES TOOLTIP-FENSTERS
Ventana de Estilo 16 + 64 + 128 + 1024
TTE_Tooltip_hWnd& = @Crear("Window", %hwnd, "", 0, 0, 128, 20)
@Externo("User32.dll", "SetWindowPos", TTE_Tooltip_hWnd&, ~HWND_TOPMOST, 0, 0, 0, 0, ~SWP_NOMOVE | ~SWP_NOSIZE | ~SWP_FRAMECHANGED)
StartPaint TTE_Tooltip_hWnd&
USEP 5, 0, 0
UseBrush 1, 0
Rectángulo 0, 0 - Width(TTE_Tooltip_hWnd&), Height(TTE_Tooltip_hWnd&)
EndPaint
ShowWindow(TTE_Tooltip_hWnd&, 0)
Ventana de Estilo 1 + 2 + 4 + 8
'}

Proc TTE_ShowTooltip

    Parámetros X&, Y&, Texto$
    Declarar Tooltip_imgbuffer&, TextLines$[], maxlen&
    '@ShowWindow(Tooltip_hWnd&, 8)
    TextLines$[] = @Explode(Texto$, "\n")
    maxlen& = 1

    WhileLoop 0, @SizeOf(TextLines$[]) - 1

        If @Len(TextLines$[&bucle]) > maxlen&

            maxlen& = @Len(TextLines$[&bucle])

        EndIf

    EndWhile

    Tooltip_imgbuffer& = @Crear("hNewPic", 8 * maxlen&, 16 * @SizeOf(TextLines$[]), 0)
    StartPaint Tooltip_imgbuffer&

    WhileLoop 0, @SizeOf(TextLines$[]) - 1

        UseFont TTE_displayFont$, 16, 8, 0, 0, 0
        Color del texto @Rgb(255, 255, 255), -1
        DrawText 0, 16 * &bucle, TextLines$[&bucle]

    EndWhile

    EndPaint
    ~SetWindowPos(TTE_Tooltip_hWnd&, ~HWND_TOPMOST, X&, Y&, @Width(Tooltip_imgbuffer&), @Height(Tooltip_imgbuffer&), ~SWP_NOACTIVATE | ~SWP_NOOWNERZORDER | ~SWP_NOZORDER | ~SWP_SHOWWINDOW)
    'SetWindowPos Tooltip_hWnd& = X&, Y& - @Width(Tooltip_imgbuffer&), @Height(Tooltip_imgbuffer&)
    StartPaint TTE_Tooltip_hWnd&
    DrawPic Tooltip_imgbuffer&, 0, 0; 0
    EndPaint
    DeleteObject Tooltip_imgbuffer&

ENDPROC

Proc TTE_HideTooltip

    @ShowWindow(TTE_Tooltip_hWnd&, 0)

ENDPROC

Proc TTE_ToolTipRoutine

    Declarar MousePos#, X!, Y!, MousePosInWnd#
    Dim MousePos#, TTE_lpPoint
    Dim MousePosInWnd#, TTE_lpPoint
    ~GetCursorPos(MousePos#)
    'Imprimir MousePos#.X&, MousePos#.Y&

    If TTE_Tooltip_aktnum& <> -1

        MousePosInWnd# = MousePos#
        ~ScreenToClient(TTE_Tooltip_tWnd&[TTE_Tooltip_aktnum&], MousePosInWnd#)

        If TTE_Tooltip_isRelative%[TTE_Tooltip_aktnum&]

            X! = MousePosInWnd#.X& / Width(TTE_Tooltip_tWnd&[TTE_Tooltip_aktnum&])
            Y! = MousePosInWnd#.Y& / Height(TTE_Tooltip_tWnd&[TTE_Tooltip_aktnum&])

        Más

            X! = MousePosInWnd#.X&
            Y! = MousePosInWnd#.Y&

        EndIf

        Caso negativo @Between(X!, TTE_Tooltip_xpos![TTE_Tooltip_aktnum&], TTE_Tooltip_xpos![TTE_Tooltip_aktnum&] + TTE_Tooltip_xsz![TTE_Tooltip_aktnum&], Y!, TTE_Tooltip_ypos![TTE_Tooltip_aktnum&], TTE_Tooltip_ypos![TTE_Tooltip_aktnum&] + TTE_Tooltip_ysz![TTE_Tooltip_aktnum&]) And (@GetActiveWindow() = TTE_Tooltip_tWnd&[TTE_Tooltip_aktnum&])

            TTE_Tooltip_aktnum& = -1
            TTE_ToolTipRoutine

        Más

            TTE_ShowTooltip MousePos#.X& + 20, MousePos#.Y& + 20, TTE_Tooltip_text$[TTE_Tooltip_aktnum&]
            '@SetActiveWindow(Tooltip_tWnd&[&loop])

        EndIf

    Más

        WhileLoop 0, @SizeOf(TTE_Tooltip_text$[]) - 1

            If (TTE_Tooltip_text$[&bucle] <> "") And (@GetActiveWindow() = TTE_Tooltip_tWnd&[&bucle]) And (TTE_Tooltip_tWnd&[&bucle] <> -1)

                MousePosInWnd# = MousePos#
                ~ScreenToClient(TTE_Tooltip_tWnd&[&bucle], MousePosInWnd#)

                If TTE_Tooltip_isRelative%[&bucle]

                    X! = MousePosInWnd#.X& / Width(TTE_Tooltip_tWnd&[&bucle])
                    Y! = MousePosInWnd#.Y& / Height(TTE_Tooltip_tWnd&[&bucle])

                Más

                    X! = MousePosInWnd#.X&
                    Y! = MousePosInWnd#.Y&

                EndIf

                If @Between(X!, TTE_Tooltip_xpos![&bucle], TTE_Tooltip_xpos![&bucle] + TTE_Tooltip_xsz![&bucle], Y!, TTE_Tooltip_ypos![&bucle], TTE_Tooltip_ypos![&bucle] + TTE_Tooltip_ysz![&bucle])

                    TTE_Tooltip_aktnum& = &bucle
                    '@MessageBox(@Str$(Tooltip_aktnum&), "", 0)
                    BREAK

                EndIf

            EndIf

            '@MessageBox(@Str$(Tooltip_aktnum&), "", 0)

        EndWhile

        If TTE_Tooltip_aktnum& = -1

            TTE_HideTooltip

        EndIf

    EndIf

    Disponer MousePos#
    Disponer MousePosInWnd#

ENDPROC

Proc TTE_RegisterTooltip

    Parámetros tWnd&, X!, Y!, SZX!, SZY!, isRelative%, Group&, Texto$
    Declarar freePos&
    freePos& = -1

    WhileLoop 0, @SizeOf(TTE_Tooltip_text$[]) - 1

        If (TTE_Tooltip_text$[&bucle] = "") And (TTE_Tooltip_tWnd&[&bucle] = -1)

            freePos& = &bucle
            BREAK

        EndIf

    EndWhile

    If freePos& = -1

        freePos& = @SizeOf(TTE_Tooltip_tWnd&[])

    EndIf

    '@MessageBox(@Str$(freePos&), "", 0)
    TTE_Tooltip_tWnd&[freePos&] = tWnd&
    TTE_Tooltip_xpos![freePos&] = X!
    TTE_Tooltip_ypos![freePos&] = Y!
    TTE_Tooltip_xsz![freePos&] = SZX!
    TTE_Tooltip_ysz![freePos&] = SZY!
    TTE_Tooltip_isRelative%[freePos&] = isRelative%
    TTE_Tooltip_grp&[freePos&] = Group&
    TTE_Tooltip_text$[freePos&] = Texto$
    '@MessageBox(@Str$(X!) + " " + @Str$(Y!) + " - " + @Str$(SZX!) + " " + @Str$(SZY!) + " = " + Texto$, "", 0)
    Volver freePos&

ENDPROC

Proc TTE_UnregisterTooltip

    Parámetros Num&, Grp&

    If Num& <> -1

        TTE_Tooltip_text$[Num&] = ""
        TTE_Tooltip_tWnd&[Num&] = -1

    Más

        WhileLoop 0, @SizeOf(TTE_Tooltip_tWnd&[]) - 1

            If TTE_Tooltip_grp&[&bucle] = Grp&

                TTE_Tooltip_text$[&bucle] = ""
                TTE_Tooltip_tWnd&[&bucle] = -1

            EndIf

        EndWhile

    EndIf

ENDPROC

Proc TTE_GetNewTooltipGroupID

    Inc TTE_Tooltip_aktmaxgrp&
    Volver TTE_Tooltip_aktmaxgrp&

ENDPROC

Proc TTE_SetTooltipFont

    Parámetros F$
    TTE_DisplayFont$ = F$

ENDPROC

Proc TTE_destroyWnd

    @DestroyWindow(TTE_Tooltip_hWnd&)

ENDPROC


Und hier una kleines Ejemplo-Programa:
 $H Windows.ph
 $I TooltipsEverywhere.Inc
CLS
TTE_SetTooltipFont "Consolas"
TTE_RegisterTooltip %hwnd, 0, 0, .5, .5, 1, -1, "Links oben"
TTE_RegisterTooltip %hwnd, .5, 0, .5, .5, 1, -1, "Rechts oben"
TTE_RegisterTooltip %hwnd, 0, .5, .5, .5, 1, -1, "Links unten"
TTE_RegisterTooltip %hwnd, .5, .5, .5, .5, 1, -1, "Rechts unten"
Mensajes del usuario 16

Sinestar encargado %umessage = 16

    WaitInput 10
    TTE_ToolTipRoutine

EndWhile

TTE_destroyWnd

Sombrero uno una vez una Tooltip erstellt, se dieser automáticamente adecuado y ausgeblendet. En relativen Koordinaten se el Tooltip en uno Änderung el Fenstergröße automáticamente neu positioniert. Man braucht se also no mehr por lo tanto a kümmern.

TTE_ToolTipRoutine
Muss simplemente regelmäßig (z.B. en 20msec-Abständen) aufgerufen voluntad. Diese Rutina prüft, welcher Tooltip aktiv es, características ihn usw.

TTE_RegisterTooltip tWnd, X, Y, SZX, SZY, isRelative, Group, Texto
Erstellt una Tooltip en Ventana tWnd a Position X, Y con Größe SZX, SZY. Wenn isRelative = 1, voluntad el Koordinaten como Relativ angesehen, sodass uno hay anstatt Pixeln Werte zwischen 0 y 1 eingibt. 1 bedeutet "volle Breite/Höhe des Fensters", zwischen 0 y 1 son beliebige Abstufungen posible. En "Group" puede ser una Gruppen-ID angeben, en mehrere Tooltips a uno Gruppe zusammenzufassen. Wenn uno no Gruppe voluntad, puede ser -1 angeben. Texto es el Tooltip-Texto, en él son Zeilenumbrüche con \n posible.

Returnwert: Handle des erstellten Tooltips.

TTE_UnregisterTooltip H, Group
Löscht el Tooltip con el Handle H. Ist H = -1, voluntad todos Tooltips el Gruppe con el ID Group gelöscht.

TTE_GetNewTooltipGroupID
Erzeugt una neue Gruppen-ID, el para Zusammenfassen de Tooltips genutzt voluntad kann.

Returnwert: Gruppen-ID

TTE_SetTooltipFont S
Setzt el Schriftart, el para Tooltips verwendet voluntad se. Muss antes ersten Ausführung de TTE_ToolTipRoutine eingestellt voluntad!

TTE_destroyWnd
Zerstört el Tooltip-Ventana. Muss en Beenden des Programms ausgeführt voluntad, danach darf TTE_ToolTipRoutine no mehr ausgeführt voluntad!

El Incluir muss al Anfang des Programms eingebunden voluntad. Außerdem benötigt ellos Windows.ph.

Saludo
Jonathan
 
28.02.2013  
 



Respuesta


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

4.676 Views

Untitledvor 0 min.
AndreasS30.12.2018
H.Brill27.12.2018
p.specht22.07.2018
Rainer Hoefs04.03.2018
Más...

Themeninformationen

Dieses Thema ha 1 subscriber:

Findus (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