Italia
Foro

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 circa dem Trayicon verweilt.
Wie geschrieben: Ging es früher immer, da die UserMessage (siehe Code) 1234 immer dann eintrat, wenn man mit dem Mauszeiger circa 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' Dimensione 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, potrebbe vielleicht Roland klären können, oder?
 
19.01.2011  
 



Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

11.207 Views

Untitledvor 0 min.
Georg Teles27.10.2024
H.Brill03.08.2024
p.specht08.02.2017
Ernst30.04.2014
Di più...

Themeninformationen

Dieses Thema hat 1 subscriber:

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