Иконки в «System Tray»
От: Nickolay Merkin Россия  
Дата: 30.03.02 06:53
Оценка: 530 (16) +2 :)
Статья :
Иконки в «System Tray»
Автор(ы): Nickolay Merkin
Дата: 04.04.2002
Иконки в трее (системной панели Windows). Способы и инструменты для работы с ними. Библиотека классов.


Авторы :
Nickolay Merkin

Аннотация :
Иконки в трее (системной панели Windows). Способы и инструменты для работы с ними. Библиотека классов.
Перекуём баги на фичи!
Вопрос по выкидыванию иконок
От: Cyberserg Украина none
Дата: 09.03.03 12:47
Оценка:
Вот у меня такая задача — выкинуть иконку ReGet-а из трея, тут все понятно, но как заполнить структуру NOTIFYICONDATA именно под ReGet?
Cyberserg
А что насчет бабблов?
От: Грибов Дмитрий Петрович www.gribuser.ru
Дата: 10.06.02 05:40
Оценка:
Которые вываливаются из иконок. Типа PuntoSwitcher-вских подсказок? Это, вроде, через ActiveX делается, но в какой TLB это искать — непонятно...
См. последнее сообщение
От: Thresher  
Дата: 25.04.02 02:03
Оценка:
Все ссылки работают...
Дурной тон
От: _Obelisk_ Россия http://www.ibm.com
Дата: 18.04.02 04:46
Оценка: 40 (3) +1
Не надо удалять иконку из трея при показе окна — жутко бесит, когда иконки там перетасовываются.
Еще не помешало бы написать про сообщение "TaskbarCreated", которое винда рассылает после того, как explorer грохнулся и был создан по новой. Очень противно, если приложение это сообщение не обрабатывает и не добавляет иконку в трей по-новой.



Душа обязана трудиться! (с) Н.Заболоцкий.
Устал :) повторять, что эта область называется ...
От: Шевченко Александр http://alexsoft.home.nov.ru
Дата: 02.04.02 04:01
Оценка:
Устал :) повторять, что эта область называется "Status Area", а не "System Tray" или еще как-нибудь.
См., н-р, статью "Handling the Taskbar" в MSDN.
Ошибочка!
От: ADK  
Дата: 31.03.02 17:58
Оценка: +1
Как обычно, при выводе всплывающего меню забывают вызвать SetForegroundWindow(hwnd);, что приводит к тому, что меню не убирается при щелчке вне его. Автору: исправьте, плиз.
Independent software developer
404
От: adontz Грузия http://adontz.wordpress.com/
Дата: 31.03.02 05:53
Оценка:
Пример использования. Диалог с иконкой в трее.
Текст примера: TrayTest.zip

hiperlink ckicked

404
Запрашиваемая вами страница не найдена.

облом :(
A journey of a thousand miles must begin with a single step © Lau Tsu
Как отловить мессагу
От: null  
Дата: 07.11.02 13:14
Оценка:
И как же отловить сообщение TaskbarCreate?
Спасибо, пофикшено.
От: CooLer Россия http://bestsoft.far.ru
Дата: 31.03.02 06:00
Оценка:
"Выше голову" — сказл палач, надевая петлю
::RegisterWindowMessage(_T("TaskbarCreated"));
От: Ed.ward Россия  
Дата: 25.06.03 15:37
Оценка: 67 (8)
Здравствуйте, null, Вы писали:

N>И как же отловить сообщение TaskbarCreate?


Зарегетрировать это сообщение вот таким макаром
const UINT WM_TASKBARCREATED = ::RegisterWindowMessage(_T("TaskbarCreated"));

и обрабатывать его

Ed.ward
... << RSDN@Home 1.0 beta 7a >>
Re: Вопрос по выкидыванию иконок
От: Ed.ward Россия  
Дата: 25.06.03 15:40
Оценка:
Здравствуйте, Cyberserg, Вы писали:

C>Вот у меня такая задача — выкинуть иконку ReGet-а из трея, тут все понятно, но как заполнить структуру NOTIFYICONDATA именно под ReGet?


Я писал программку которая выкидывает ненужные мне иконки.
Действовал так, брал HWND окна приложения а ID подбирал перебором начиная от 1
Дальше 1000 обычно не заходило, все почему-то назначают небольшие значения для ID иконки

Ed.ward
... << RSDN@Home 1.0 beta 7a >>
Re: А что насчет бабблов?
От: PM  
Дата: 26.06.03 07:05
Оценка:
Здравствуйте, Грибов Дмитрий Петрович, Вы писали:

ГДП>Которые вываливаются из иконок. Типа PuntoSwitcher-вских подсказок? Это, вроде, через ActiveX делается, но в какой TLB это искать — непонятно...


Baloon ToolTips наверно См. About ToolTip Controls

Эта фишка работает начиная с версии шелла 5.0, однако у меня в Windows2000 нотификационные сообщения NIN_BALLOONSHOW, NIN_BALLOONHIDE, NIN_BALLOONTIMEOUT, NIN_BALLOONUSERCLICK отловить не получилось — такое впечатление, что они вообще не приходят
... << RSDN@Home 1.0 beta 7a >>
Re: Иконки в «System Tray»
От: BlackHeretic Израиль  
Дата: 26.06.03 11:56
Оценка:
Здравствуйте, Nickolay Merkin, Вы писали:

NM>Иконки в трее (системной панели Windows). Способы и инструменты для работы с ними. Библиотека классов.



По поводу:

lstrcpyn(nid.szTip, _T("Tool tip for my icon"), sizeof(nid.szTip)/sizeof(nid.szTip[0]);


В UNICODE конфигурации ваабче работать не станет.


ИМХО, лучшее:

_tcscpy(nid.szTip, _T("Tool tip for my icon"));


А еще неплохо бы проверить длину заносимой строки. Если я правильно закопипестил, то
#if (_WIN32_IE < 0x0500)
        TCHAR szTip[64];
    #else
        TCHAR szTip[128];
    #endif


В обчем требую переписывания статьи
Дальше не смотрел — времени нет...
ICQ 156156278
Re[2]: Иконки в «System Tray»
От: Кодт Россия  
Дата: 26.06.03 12:25
Оценка: +1
Здравствуйте, BlackHeretic, Вы писали:

BH>По поводу:


BH>lstrcpyn(nid.szTip, _T("Tool tip for my icon"), sizeof(nid.szTip)/sizeof(nid.szTip[0]);


BH>В UNICODE конфигурации ваабче работать не станет.


Как это не будет?
// winbase.h

WINBASEAPI LPSTR WINAPI lstrcpynA(
    LPSTR lpString1,
    LPCSTR lpString2,
    int iMaxLength
    );
WINBASEAPI LPWSTR WINAPI lstrcpynW(
    LPWSTR lpString1,
    LPCWSTR lpString2,
    int iMaxLength
    );

#ifdef UNICODE
#define lstrcpyn  lstrcpynW
#else
#define lstrcpyn  lstrcpynA
#endif // !UNICODE


BH>ИМХО, лучшее:

BH>_tcscpy(nid.szTip, _T("Tool tip for my icon"));

Имхо, худшее, потому что нет контроля длины копируемой строки.

BH>А еще неплохо бы проверить длину заносимой строки. Если я правильно закопипестил, то

BH>#if (_WIN32_IE < 0x0500)
BH>        TCHAR szTip[64];
BH>    #else
BH>        TCHAR szTip[128];
BH>    #endif


А вот для этого я и написал: sizeof(nid.szTip)/sizeof(nid.szTip[0]).

BH>В обчем требую переписывания статьи


Асимметричный ответ: требую перечитывания.
Перекуём баги на фичи!
Re[3]: Иконки в «System Tray»
От: BlackHeretic Израиль  
Дата: 26.06.03 13:05
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, BlackHeretic, Вы писали:


BH>>По поводу:


К>
BH>>lstrcpyn(nid.szTip, _T("Tool tip for my icon"), sizeof(nid.szTip)/sizeof(nid.szTip[0]);
К>


BH>>В UNICODE конфигурации ваабче работать не станет.


К>Как это не будет?

К>
К>// winbase.h

К>WINBASEAPI LPSTR WINAPI lstrcpynA(
К>    LPSTR lpString1,
К>    LPCSTR lpString2,
К>    int iMaxLength
К>    );
К>WINBASEAPI LPWSTR WINAPI lstrcpynW(
К>    LPWSTR lpString1,
К>    LPCWSTR lpString2,
К>    int iMaxLength
К>    );

К>#ifdef UNICODE
К>#define lstrcpyn  lstrcpynW
К>#else
К>#define lstrcpyn  lstrcpynA
К>#endif // !UNICODE
К>


BH>>ИМХО, лучшее:

К>
BH>>_tcscpy(nid.szTip, _T("Tool tip for my icon"));
К>

К>Имхо, худшее, потому что нет контроля длины копируемой строки.

BH>>А еще неплохо бы проверить длину заносимой строки. Если я правильно закопипестил, то

К>
BH>>#if (_WIN32_IE < 0x0500)
BH>>        TCHAR szTip[64];
BH>>    #else
BH>>        TCHAR szTip[128];
BH>>    #endif
К>


К>А вот для этого я и написал: sizeof(nid.szTip)/sizeof(nid.szTip[0]).


BH>>В обчем требую переписывания статьи


К>Асимметричный ответ: требую перечитывания.


Посыпаю голову пеплом
И на старуху бывает проруха, как такой ляп я допустил...

Попутал с strncpy.

Извини мужик, уработался я

Клянусь перечитать все от <BODY> до </BODY>
ICQ 156156278
Re: ::RegisterWindowMessage(_T("TaskbarCreated"));
От: Аноним  
Дата: 19.09.03 12:07
Оценка:
Здравствуйте, Ed.ward, Вы писали:

EW>Здравствуйте, null, Вы писали:


N>>И как же отловить сообщение TaskbarCreate?


EW>Зарегетрировать это сообщение вот таким макаром

EW>
EW>const UINT WM_TASKBARCREATED = ::RegisterWindowMessage(_T("TaskbarCreated"));
EW>

EW>и обрабатывать его

EW>Ed.ward


а как его в WTL обработать?
Re[2]: ::RegisterWindowMessage(_T("TaskbarCreated"));
От: Ed.ward Россия  
Дата: 19.09.03 14:23
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Здравствуйте, Ed.ward, Вы писали:


EW>Здравствуйте, null, Вы писали:


N>>И как же отловить сообщение TaskbarCreate?


EW>Зарегетрировать это сообщение вот таким макаром

EW>
EW>const UINT WM_TASKBARCREATED = ::RegisterWindowMessage(_T("TaskbarCreated"));
EW>

EW>и обрабатывать его

EW>Ed.ward


А>а как его в WTL обработать?


Так же как и любые WM_XXX

Ed.ward
... << RSDN@Home 1.0 beta 7a >>
Re: Иконки в «System Tray»
От: djyuran  
Дата: 12.03.05 09:00
Оценка:
До того запутанная система... Там всё намного проще!
Я тут прочитал раз та три и всё равно библиотеку классов с трудом понимаю
Re: Иконки в «System Tray»
От: unz0r  
Дата: 12.03.06 07:14
Оценка: -2
Вообще-то иконки в трее имеют размер 20x20.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.