Исчезает иконка в трее

Тема в разделе "WASM.WIN32", создана пользователем tagegor, 16 июл 2009.

  1. tagegor

    tagegor New Member

    Публикаций:
    0
    Регистрация:
    8 июл 2009
    Сообщения:
    54
    Здравствуйте, форумчане. Возникла проблема. При запуске моей программы создается значок в трее
    Код (Text):
    1. mov         note.cbSize,sizeof NOTIFYICONDATA
    2. mov         note.uID,IDI_TRAY
    3. mov         note.uFlags,NIF_ICON+NIF_MESSAGE+NIF_TIP
    4. mov         note.uCallbackMessage,WM_SHELLNOTIFY
    5. invoke  GetModuleHandle,0
    6. mov       [hinstance],eax
    7. invoke  LoadIcon,eax,500
    8. mov         note.hIcon,eax
    9. mov         note.szTip,NULL
    10. invoke      Shell_NotifyIcon,NIM_ADD,addr note
    Где 500 номер иконки из файла ресурсов
    Иконка то создается, только при наведении на нее мышой она исчезает. Как решить эту траблу?
    Спасибо :)
     
  2. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    это не указатель а массив.
    если не хотите заполнять его нулями, но так уж надо создать иконку без Tipa, просто уберите флаг NIF_TIP. А так вообще-то не должна пропадать.
     
  3. iZzz32

    iZzz32 Sergey Sfeli

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    355
    note.hWnd заполнено? Окно такое есть? Видимо, нет.
     
  4. Com[e]r

    Com[e]r Com[e]r

    Публикаций:
    0
    Регистрация:
    20 апр 2007
    Сообщения:
    2.624
    Адрес:
    ого..
    угу, оно так ведёт себя только если не привязано к окну.
    ещё следи и обновляй её, ато ресетнешь эксплорер - и как небывало твоей иконки
     
  5. tagegor

    tagegor New Member

    Публикаций:
    0
    Регистрация:
    8 июл 2009
    Сообщения:
    54
    Программа без тела. Тоесть должна быть иконка в трее, и висящий процесс.
    Как быть? :) Куда ее привязать, и как? :lol:
     
  6. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    создай невидимое окно и привяжи к нему
     
  7. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    Окно создавать не обязательно, можно прицепиться к другому, но нужно будет подменить оконную процедуру окна-донора, чтобы ловить WM_NOTIFY
     
  8. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    Add: если же будешьсоздавать свое, то WS_EX_TOOLWINDOW
     
  9. arrrg

    arrrg New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2009
    Сообщения:
    124
    зачем тулвиндов?не забивайте мозги человеку, пусть просто создаст окно, а в опциях отображения поставит SV_HIDE (или как оно там))) и всё
     
  10. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    только класс WS_EX_TOOLWINDOW при сворачивании не отображается в панели задач
     
  11. arrrg

    arrrg New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2009
    Сообщения:
    124
    повторяю сказанное выше - программа без тела, только иконка
    а если не отображается окно(параметр SV_HIDE) то и на панэли задач ничего не будет
     
  12. katrus

    katrus New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    612
    А message loop есть у иконки?
     
  13. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    arrrg Читай азы.
     
  14. arrrg

    arrrg New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2009
    Сообщения:
    124
    а вотэтого я не знаю
     
  15. tagegor

    tagegor New Member

    Публикаций:
    0
    Регистрация:
    8 июл 2009
    Сообщения:
    54
    Сделал так
    Код (Text):
    1. hInst                   HINSTANCE ?
    2. hwnd                    HWND ?
    +
    Код (Text):
    1. invoke      CreateWindowEx,WS_EX_CLIENTEDGE,ADDR ClassName,ADDR AppName,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,300,200,NULL,NULL, hInst,NULL
    2. mov         hwnd,eax
    3. mov         note.hWnd,eax
    4. invoke      ShowWindow, hwnd,SW_HIDE
    5. invoke      UpdateWindow, hwnd
    и
    Код (Text):
    1. mov         note.cbSize,sizeof NOTIFYICONDATA
    2. mov         note.uID,IDI_TRAY
    3. mov         note.uFlags,NIF_ICON+NIF_MESSAGE
    4. mov         note.uCallbackMessage,WM_SHELLNOTIFY
    5. invoke   GetModuleHandle,0
    6. mov       [hinstance],eax
    7. invoke   LoadIcon,eax,500
    8. mov         note.hIcon,eax
    Компилить отказывается
     
  16. arrrg

    arrrg New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2009
    Сообщения:
    124
    а с какой ошибкой?
     
  17. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    убери invoke ShowWindow, hwnd, SW_HIDE
    и добавь mov eax, hwnd/mov note.hWnd, eax
     
  18. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    сорри. во второй строке я погорячился, но вот на кой спрашивается вам 2 hInstance
     
  19. arrrg

    arrrg New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2009
    Сообщения:
    124
    компилить отказывалось изза неверного задания стиля
    SW_HIDE а не SV_HIDE
    я ведь говгорил, что могу ошибатся, а ты поставил SV_HIDE
     
  20. tagegor

    tagegor New Member

    Публикаций:
    0
    Регистрация:
    8 июл 2009
    Сообщения:
    54
    Ругается на
    Код (Text):
    1. mov         note.hWnd,eax
    Error A2006 : hWnd