Italia
Foro

ToolTips InPlace wmnotify NMHDR

 

Jörg
Sellmeyer
Dieser Thread [...]  hat mich auf die Idee gebracht, mal Tooltips zu manipulieren. Leider sendet XProfan kein wmnotify, wenn ein Tooltip auftaucht. Man kann WM_NOTIFY aber als UserMessage deklarieren, dann kommt die Message an. Ich bekomme aber keine vernünftigen Werte in die entsprechende Struktur.
Hat schon jemand damit rumexperimentiert und ist auf bessere Ergebnisse gekommen?
Ich hab was in C gefunden, aber damit kann ich nichts anfangen [...] 
Kommentare am besten vor dem Starten komplett entfernen, weil die sich auf die Absturzwahrscheinlichkeit auswirken.
KompilierenMarkierenSeparieren
'Achtung! Das knallt andauernd! Testcode - auf eigene Gefahr einzusetzen!
 $H Messages.ph
Def &TTN_SHOW , -521
Struct NMHDR = hwndFrom&,idFrom&,code&
Declare NMHDR#
Dim NMHDR#,NMHDR

Proc GetNMHDRInfo

    Parameters b#
    NMHDR# = b#
    Dispose b#
    Var s$ = Str$(NMHDR#.hwndFrom&) + " " + Str$(NMHDR#.idFrom&) + " " +  Str$(NMHDR#.code&) + " " +  Str$(&gettickcount)
    Dispose NMHDR#
    SetText txt&,s$

EndProc

Cls
Var btn1& = Create("Button",%hwnd,"Test 1",100,100,100,30)
Var btn2& = Create("Button",%hwnd,"Test 2",210,100,100,30)
Var tt1& = Create("ToolTip",%hwnd,btn1&,"Test 1")
Var tt2& = Create("ToolTip",%hwnd,btn2&,"Test 2")
Var txt& = Create("Text",%hwnd,"",0,30,400,24)
UserMessages $10,~WM_NOTIFY

While 1

    WaitInput
    Print %hwnd,btn1&,tt1&,%notifycode,&lparam',"       "
    Locate 1,1

    If %umessage = $10

        Break

    ElseIf %umessage = ~WM_NOTIFY

        If (&wparam = btn1&) Or (&wparam = btn2&)

            GetNMHDRInfo(&lparam)

        EndIf

        'hier wundert mich, daß ich als Notifycode nur -12 erhalte.
        'eigentlich erwarte ich -521 für TTN_SHOW
        'Außerdem sollte dann &lparam ein Zeiger auf eine Struktur NMHDR sein
        'Die Werte darin sind aber für mich nicht in Einklang zu bringen mit dem,
        'was in der Api-Hilfe steht.
        'Wenn dieser Kommentar vor dem Funktionsaufruf steht, knallt es übrigens häufiger!

    EndIf

Wend

Dispose NMHDR#
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
17.11.2011  
 



Wenn Windows eine Nachricht an eine wndProc gibt also ein call auf die wndProc absetzt und Adressen übergibt dann existieren die Adressen nicht unbedingt auch noch nachdem die wndProc beendet ist was aber bei Erhalt einer UserMessage längst der Fall ist.

Angenommen "Windows" macht:

int speicher=createSpeicher()
call wndProcOfDaApp, wnd,wm_irgendwas,speicher,0
freiGibSpeicher(speicher)

dann ists aus Sicht der UserMessage längst zu spät.

Ich habs per diesen Fall nicht überprüft aber sowas sollte man bedenken.

Sichere Abhilfe schafft da die SubClassProc oder wenn mans verlustfrei braucht dann einfach eine nProc als wndProc setzen.
 
17.11.2011  
 



Nachtrag: Etwas schwindelig wird mir auch bei
KompilierenMarkierenSeparieren
Parameters b#
NMHDR# = b#
Dispose 
re>

weil Du den Speicher ja nicht kopierst sondern mit den Adressen wurstelst.

Du disposed ja NMHDR#

Übernimm die Adressen in 32 Bit einfach als int32 bzw. long und später bei 64bit als int64.
 
17.11.2011  
 




Jörg
Sellmeyer

dann ists aus Sicht der UserMessage längst zu spät.


Das würde naturalmente erklären, warum in der Struktur nichts drinsteht.
Es reichte ja eigentlich aus, daß XProfan wmnotify auch beim Auftauchen eines Tooltips sendet und die Systemvarablen entsprechen bestückt. Dann potuto man sich das hier sparen...
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
17.11.2011  
 



Oder mit anderen Worten sind UserMessages per diesen Fall ungeeignet aber es gibt ja die SubClassProc.
 
17.11.2011  
 



Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

3.361 Views

Untitledvor 0 min.
H.Brill vor 11 Tagen
Jörg Sellmeyer18.06.2020
Andre Rohland16.06.2019
Uwe Lang04.03.2017
Di più...

Themeninformationen

Dieses Thema hat 2 subscriber:

iF (3x)
Jörg Sellmeyer (2x)


Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie