Français
Comprend

Standard TooltipsEverywhere - Tooltip-Include pour Tooltips sur chaque la fenêtre-Bereich

 

Findus
Jonathan (27.02.2013)
Salut,

peut-être peux cela oui quelqu'un gebrauchen: une Include, avec qui on sur chaque beliebigen la fenêtre sur chaque beliebigen Bereich (relativ (0 jusqu'à 1) et absolu (Pixel)) une Tooltip erzeugen peux, sogar mehrzeilig.

ici qui Include:
'TOOLTIPS EVERYWHERE - TOOLTIP-INCLUDE D' TOOLTIPS AUF JEGLICHEN FENSTER-BEREICHEN
'==================================================================================
'
'(c) 2013 Jonathan
'cet Include darf libre verwendet et modifiziert volonté. Um une Hinweis sur den
'original Autor wird gebeten, zumindest im Quellcode.
Struct TTE_lpPoint = X&, Y&
'{GLOBALE VARIABLEN
Déclarer TTE_Tooltip_hWnd&'cela Tooltip-la fenêtre
Déclarer TTE_Tooltip_text$[]'Text des Tooltips [X]
Déclarer TTE_Tooltip_grp&[]'Gruppe des Tooltips [X]
Déclarer TTE_Tooltip_tWnd&[]'la fenêtre des Tooltips [X]
Déclarer TTE_Tooltip_xpos![]'X-Position des Tooltip-Bereichs [X]
Déclarer TTE_Tooltip_ypos![]'Y-Position des Tooltip-Bereichs [X]
Déclarer TTE_Tooltip_xsz![]'X-Taille des Tooltip-Bereichs [X]
Déclarer TTE_Tooltip_ysz![]'Y-Taille des Tooltip-Bereichs [X]
Déclarer TTE_Tooltip_isRelative%[]'Relative Koordinaten pour Tooltip [X]?
Déclarer TTE_Tooltip_aktnum&'numéro des aktuell sichtbaren Tooltips
Déclarer TTE_Tooltip_aktmaxgrp&'Maximale vergebene Gruppen-ID
Déclarer TTE_DisplayFont$'Nichtproportionaler Font
Déclarer TTE_TempStr$
TTE_Tooltip_aktmaxgrp& = -1
TTE_Tooltip_aktnum& = -1
'}
'{INITIALISIEREN DES TOOLTIP-FENSTERS
Fenêtre Style 16 + 64 + 128 + 1024
TTE_Tooltip_hWnd& = @Créer("Window", %hwnd, », 0, 0, 128, 20)
@Externe(User32.dll", "SetWindowPos", TTE_Tooltip_hWnd&, ~HWND_TOPMOST, 0, 0, 0, 0, ~SWP_NOMOVE | ~SWP_NOSIZE | ~SWP_FRAMECHANGED)
Début de peinture TTE_Tooltip_hWnd&
USEP 5, 0, 0
UseBrush 1, 0
Rectangle 0, 0 - Width(TTE_Tooltip_hWnd&), Height(TTE_Tooltip_hWnd&)
EndPaint
ShowWindow(TTE_Tooltip_hWnd&, 0)
Fenêtre Style 1 + 2 + 4 + 8
'}

Proc TTE_ShowTooltip

    Paramètres X&, Y&, Text$
    Déclarer Tooltip_imgbuffer&, TextLines$[], maxlen&
    '@ShowWindow(Tooltip_hWnd&, 8)
    TextLines$[] = @Explode(Text$, "\n")
    maxlen& = 1

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

        Si @Len(TextLines$[&loop]) > maxlen&

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

        EndIf

    Endwhile

    Tooltip_imgbuffer& = @Créer("hNewPic", 8 * maxlen&, 16 * @SizeOf(TextLines$[]), 0)
    Début de peinture Tooltip_imgbuffer&

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

        UseFont TTE_displayFont$, 16, 8, 0, 0, 0
        Couleur du texte @Rgb(255, 255, 255), -1
        DrawText 0, 16 * &loop, TextLines$[&loop]

    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&)
    Début de peinture 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

    Déclarer MousePos#, X!, Y!, MousePosInWnd#
    Faible MousePos#, TTE_lpPoint
    Faible MousePosInWnd#, TTE_lpPoint
    ~GetCursorPos(MousePos#)
    'Imprimer MousePos#.X&, MousePos#.Y&

    Si TTE_Tooltip_aktnum& <> -1

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

        Si 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&])

        D'autre

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

        EndIf

        Si non @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

        D'autre

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

        EndIf

    D'autre

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

            Si (TTE_Tooltip_text$[&loop] <> ») And (@GetActiveWindow() = TTE_Tooltip_tWnd&[&loop]) And (TTE_Tooltip_tWnd&[&loop] <> -1)

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

                Si TTE_Tooltip_isRelative%[&loop]

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

                D'autre

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

                EndIf

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

                    TTE_Tooltip_aktnum& = &loop
                    '@MessageBox(@Str$(Tooltip_aktnum&), », 0)
                    BREAK

                EndIf

            EndIf

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

        Endwhile

        Si TTE_Tooltip_aktnum& = -1

            TTE_HideTooltip

        EndIf

    EndIf

    Dispose MousePos#
    Dispose MousePosInWnd#

ENDPROC

Proc TTE_RegisterTooltip

    Paramètres tWnd&, X!, Y!, SZX!, SZY!, isRelative%, Group&, Text$
    Déclarer freePos&
    freePos& = -1

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

        Si (TTE_Tooltip_text$[&loop] = ») And (TTE_Tooltip_tWnd&[&loop] = -1)

            freePos& = &loop
            BREAK

        EndIf

    Endwhile

    Si 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&] = Text$
    '@MessageBox(@Str$(X!) + " " + @Str$(Y!) + " - " + @Str$(SZX!) + " " + @Str$(SZY!) + " = " + Text$, », 0)
    Retour freePos&

ENDPROC

Proc TTE_UnregisterTooltip

    Paramètres Num&, Grp&

    Si Num& <> -1

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

    D'autre

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

            Si TTE_Tooltip_grp&[&loop] = Grp&

                TTE_Tooltip_text$[&loop] = »
                TTE_Tooltip_tWnd&[&loop] = -1

            EndIf

        Endwhile

    EndIf

ENDPROC

Proc TTE_GetNewTooltipGroupID

    Inc TTE_Tooltip_aktmaxgrp&
    Retour TTE_Tooltip_aktmaxgrp&

ENDPROC

Proc TTE_SetTooltipFont

    Paramètres F$
    TTE_DisplayFont$ = F$

ENDPROC

Proc TTE_destroyWnd

    @DestroyWindow(TTE_Tooltip_hWnd&)

ENDPROC


et ici un kleines Beispiel-Programme:
 $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"
Utilisateur Messages 16

WhileNot %umessage = 16

    WaitInput 10
    TTE_ToolTipRoutine

Endwhile

TTE_destroyWnd

Hat on einmal une Tooltip erstellt, wird cette automatisch angezeigt et ausgeblendet. chez relativen Koordinaten wird qui Tooltip chez einer Changement qui Fenstergröße automatisch récente positionné. on braucht sich alors pas plus tout autor trop kümmern.

TTE_ToolTipRoutine
Muss simple régulier (z.B. dans 20msec-Abständen) aufgerufen volonté. cet Routine prüft, quel Tooltip aktiv ist, zeichnet ihn usw.

TTE_RegisterTooltip tWnd, X, Y, SZX, SZY, isRelative, Group, Text
Erstellt une Tooltip sur la fenêtre tWnd à Position X, Y avec Taille SZX, SZY. si isRelative = 1, volonté qui Koordinaten comme Relativ angesehen, sodass on là anstatt Pixeln Werte entre 0 et 1 eingibt. 1 bedeutet "volle Breite/Hauteur des Fensters", entre 0 et 1 sommes beliebige Abstufungen possible. chez "Group" peux on une Gruppen-ID angeben, um plusieurs Tooltips trop einer Gruppe zusammenzufassen. si on aucun Gruppe veux, peux on -1 angeben. Text ist qui Tooltip-Text, y sommes Zeilenumbrüche avec \n possible.

Returnwert: Handle des erstellten Tooltips.

TTE_UnregisterTooltip H, Group
Löscht den Tooltip avec dem Handle H. Ist H = -1, volonté alle Tooltips qui Gruppe avec qui ID Group gelöscht.

TTE_GetNewTooltipGroupID
Erzeugt une neue Gruppen-ID, qui zum Zusammenfassen de Tooltips genutzt volonté peux.

Returnwert: Gruppen-ID

TTE_SetTooltipFont S
mets qui Schriftart, qui pour Tooltips verwendet volonté soll. Muss avant qui ersten Ausführung de TTE_ToolTipRoutine eingestellt volonté!

TTE_destroyWnd
Zerstört cela Tooltip-la fenêtre. Muss chez finissons des Programms fonctionnement volonté, après darf TTE_ToolTipRoutine pas plus fonctionnement volonté!

qui Include muss am Anfang des Programms eingebunden volonté. Aussi nécessaire vous Windows.ph.

Salut
Jonathan
 
28.02.2013  
 



répondre


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

4.656 Views

Untitledvor 0 min.
AndreasS30.12.2018
H.Brill27.12.2018
p.specht22.07.2018
Rainer Hoefs04.03.2018
plus...

Themeninformationen

cet Thema hat 1 participant:

Findus (1x)


Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie