Deutsch
Forum

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 für 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 b#

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 natürlich 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 könnte 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 für diesen Fall ungeeignet aber es gibt ja die SubClassProc.
 
17.11.2011  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

3.353 Betrachtungen

Unbenanntvor 0 min.
H.Brill vor 10 Tagen
Jörg Sellmeyer18.06.2020
Andre Rohland16.06.2019
Uwe Lang04.03.2017
Mehr...

Themeninformationen

Dieses Thema hat 2 Teilnehmer:

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


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


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