News:

Masm32 SDK description, downloads and other helpful links
Message to All Guests
NB: Posting URL's See here: Posted URL Change

Main Menu

x64 Tray Icon Example shows transparent icon and does nothing

Started by bluedevil, September 25, 2022, 04:42:04 PM

Previous topic - Next topic

bluedevil

Hello

If I understand right, somehow
1. WM_SHELLNOTIFY is not getting triggered

    .elseif uMsg==WM_SHELLNOTIFY
        .if wParam==IDI_TRAY
            .if lParam==WM_RBUTTONDOWN
                invoke GetCursorPos, addr pt
                invoke SetForegroundWindow, hWnd
                invoke TrackPopupMenu, hPopupMenu, TPM_RIGHTALIGN, pt.x, pt.y, NULL, hWnd, NULL
                invoke PostMessage, hWnd, WM_NULL, 0, 0
               
            .elseif lParam==WM_LBUTTONDBLCLK
                invoke SendMessage, hWnd, WM_COMMAND, IDM_RESTORE, 0
            .endif
        .endif

2. When minimized no icon is showing

    .elseif uMsg==WM_SIZE
        .if wParam==SIZE_MINIMIZED
            mov note.cbSize, sizeof NOTIFYICONDATA
            mov rax, hWnd
            mov note.hwnd, rax
            mov note.uID, IDI_TRAY
            mov note.uCallbackMessage, WM_SHELLNOTIFY
           
            invoke LoadIcon, NULL, IDI_WINLOGO
            mov note.hIcon, rax
           
            invoke lstrcpy, addr note.szTip, addr AppName
           
            invoke ShowWindow, hWnd, SW_HIDE
            invoke Shell_NotifyIcon, NIM_ADD, addr note
        .endif


I removed the "[Solved]" in the title as this forum is not a help desk. Our members help out where they can if time allows.
..Dreams make the future
But the past never lies..
BlueDeviL // SCT
My Code Site:
BlueDeviL Github

bluedevil

BTW

@Mikl__ your example works very fine but I can not get how you did it. For example you didn't fill the NOTIFYICONDATA under SIZE_MINIMIZED but you did it in data section?
..Dreams make the future
But the past never lies..
BlueDeviL // SCT
My Code Site:
BlueDeviL Github

bluedevil

Esen (Hello)!

I woke up early in this Monday morning and fixed it. @Mikl__ I finally understand what you have done in data section  :greenclp: So if I didn't misunderstand in x64 we need to add flags:

mov note.uFlags, NIF_ICON or NIF_MESSAGE or NIF_TIP

It is working now

But one more thing: I have to add -Zp8 parameter to make this app work! M$ Docs says:
Quote
/Zp⟦alignment⟧    Packs structures on the specified byte boundary. The alignment can be 1, 2, or 4.

I think my NOTIFYICONDATA structure is not perfect!

NOTIFYICONDATAA STRUCT
    cbSize              DWORD   ?
    hwnd                HWND    ?
    uID                 DWORD   ?
    uFlags              DWORD   ?
    uCallbackMessage    DWORD   ?
    hIcon               HICON   ?
    szTip               BYTE    64 dup (?)
    ;                    BYTE    128 dup (?)
    dwState             DWORD   ?
    dwStateMask         DWORD   ?
    szInfo              BYTE    256 dup(?)
    union DUMMYUNIONNAME
        uTimeout        DWORD   ?
        uVersion        DWORD   ?
    ends
    szInfoTitle         BYTE    64 dup(?)
    dwInfoFlags         DWORD   ?
    guidItem            GUID    <>
    hBalloonIcon        HICON   ?
NOTIFYICONDATAA ENDS

NOTIFYICONDATAW STRUCT
    cbSize              DWORD   ?
    hwnd                HWND    ?
    uID                 DWORD   ?
    uFlags              DWORD   ?
    uCallbackMessage    DWORD   ?
    hIcon               HICON   ?
    szTip               WORD    64 dup (?)
    ;                    WORD    128 dup (?)
    dwState             DWORD   ?
    dwStateMask         DWORD   ?
    szInfo              WORD    256 dup(?)
    union DUMMYUNIONNAME
        uTimeout        DWORD   ?
        uVersion        DWORD   ?
    ends
    szInfoTitle         WORD    64 dup(?)
    dwInfoFlags         DWORD   ?
    guidItem            GUID    <>
    hBalloonIcon        HICON   ?
NOTIFYICONDATAW ENDS

IFDEF __UNICODE__
    NOTIFYICONDATA  equ  <NOTIFYICONDATAW>
ELSE
    NOTIFYICONDATA  equ  <NOTIFYICONDATAA>
ENDIF
..Dreams make the future
But the past never lies..
BlueDeviL // SCT
My Code Site:
BlueDeviL Github

TimoVJL

also this might help with x64
NOTIFYICONDATAA STRUCT 8
structure offsets and sizesNOTIFYICONDATA   528 210h bytes
cbSize           +0h 4h
hWnd             +8h 8h
uID              +10h 4h
uFlags           +14h 4h
uCallbackMessage +18h 4h
hIcon            +20h 8h
szTip            +28h 80h
dwState          +A8h 4h
dwStateMask      +ACh 4h
szInfo           +B0h 100h
uTimeout         +1B0h 4h
uVersion         +1B0h 4h
dwInfoFlags      +1F4h 4h
guidItem         +1F8h 10h
hBalloonIcon     +208h 8h
NOTIFYICONDATA   210h bytes
May the source be with you

hutch--

Would you guys give up on using the [Resolved] tag in the subject line. This forum is NOT A HELP DESK.

bluedevil

Quote from: TimoVJL on September 26, 2022, 06:23:48 PM
also this might help with x64
NOTIFYICONDATAA STRUCT 8

This helped directly, thank you

Quote from: hutch-- on September 26, 2022, 06:35:46 PM
Would you guys give up on using the [Resolved] tag in the subject line. This forum is NOT A HELP DESK.

OK hutch-- I got the message  :thumbsup:
..Dreams make the future
But the past never lies..
BlueDeviL // SCT
My Code Site:
BlueDeviL Github

zedd151

@bluedevil
Good to see that you're improving your troubleshooting skills, we'll sort of. At least you are trying.  :thumbsup: