Deutsch
Forum

TrayIcon und Messages

 

Rolf
Koch
Huhu
Aus hier bereits gepostetem Grund nutze ich eine alte Routine und nicht die fertigen Sachen des Trayicons in einem Projekt. Es geht darum, daß es bis damals ging, per Message zu überprüfen, ob die Maus über dem Trayicon verweilt.
Wie geschrieben: Ging es früher immer, da die UserMessage (siehe Code) 1234 immer dann eintrat, wenn man mit dem Mauszeiger über dem Icon verweilte und diese wieder auf 0 war, sobald man es verließ.
Seht Ihr einen Fehler in Bezug auf das Problem? Hier ein schnell extrahierter Code um das Problem darzustellen.
Def LoadIcon(2) !"USER32","LoadIconA"
DEF ExtractIcon(3) !"SHELL32","ExtractIconA"
Def GetClassLong(2) !"USER32","GetClassLongA"
Def GetCursorPos(1) !"USER32","GetCursorPos"
Def ShellNotify(2) !"SHELL32","Shell_NotifyIconA"
Def SetForegroundWindow(1) !"USER32","SetForegroundWindow"
Def GetDoubleClickTime(0) !"USER32","GetDoubleClickTime"
Def Sleep2(1) !"KERNEL32","Sleep"
Declare NIDATA#,Pos#,ic2#,ende%,icondll&,test4&
dim nidata#,100
Dim ic2#,100

Proc SetNewTip

    Parameters t$
    String NIDATA#,24=t$+Chr$(0)
    ShellNotify(1,NIDATA#)'NIM_Modify

EndProc

Proc SetNewIcon

    Parameters name$
    declare icon_handle&
    String ic2#,0=name$
    icon_handle& = loadicon(icondll&,ic2#)' Handle des Icons
    Long NIDATA#,20 = icon_handle&
    ShellNotify(1,NIDATA#)'NIM_Modify

EndProc

Proc SetIcon

    Parameters name$
    declare icon_handle&
    String ic2#,0=name$
    icon_handle& = ExtractIcon(%hinstance,ic2#,0)
    'icon_handle&=loadicon(0,ic2#)' Handle des Icons
    Long NIDATA#,20 = icon_handle&
    ShellNotify(1,NIDATA#)'NIM_Modify

EndProc

Proc CreateTrayIcon

    Long NIDATA#, 0 = 88' Größe der Struktur
    Long NIDATA#, 4 = %hwnd' Handle des Profanfensters
    Long NIDATA#, 8 = 7777' unwichtig,ergibt &wparam bei Abfrage,kann auch 0 sein
    Long NIDATA#, 12= 7' NIF_MESSAGE or NIF_ICON or NIF_TIP;
    Long NIDATA#, 16 = 1234' benutzerdef. Message, muß größer als 1024 (wm_user) sein
    Long NIDATA#, 20 = loadicon(icondll&,ic2#)'LoadIcon(0,0) ' Handle eines Systemicons
    String NIDATA#, 24 = ""+Chr$(0)' Tooltip, max. 63 Zeichen
    ShellNotify(0,NIDATA#)' NIM_ADD

EndProc

proc add_tryicon

    parameters text$,icon$
    WindowStyle $78
    CreateTrayIcon
    SetNewIcon icon$

endproc

proc del_tryicon

    ShellNotify(2,NIDATA#)' NIM_DELETE

endproc

usermessages 1234
Window 0,0 - 800,800
Windowtitle "Rechtsklick auf Icon zum beenden!"
add_tryicon "Test","A"
SETICON $winpath+"\\explorer.exe"
settimer 150

WhileNot Ende%

    waitinput

    if %wmtimer

        print %umessage
        'Diese Umessage sollte nur 1234 bei Mouseover Icon sein. Ansonsten 0!
        case &ulparam=516:End

    endif

Endwhile

del_tryicon
 
17.01.2011  
 




Rolf
Koch
Zum Hinweis:
Bei einer Problemsuche mit iF ist aufgefallen, daß ein Timer wie hier in dem Fall die Umessages scheinbar wegkickt. Mussten uns also was ganz anderes ausdenken.
Warum die Messages bei %WMTIMER wie hier in dem Beispiel nicht ankommen, dürfte vielleicht Roland klären können, oder?
 
19.01.2011  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

11.206 Betrachtungen

Unbenanntvor 0 min.
Georg Teles27.10.2024
H.Brill03.08.2024
p.specht08.02.2017
Ernst30.04.2014
Mehr...

Themeninformationen

Dieses Thema hat 1 Teilnehmer:

Rolf Koch (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