Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];

Вниз

FAQ: Добавление иконки в SysTray   Найти похожие ветки 

 
Piter ©   (2004-04-03 18:13) [40]

Панов, а это тобой написанный пример: http://home.ural.ru/~panov/icontray.html ?
Для FAQ"а пример, имхо, слишком сложен. И совершенно не понимаю - зачем WindowProc переназначать?!
Если хочешь все расписать (анимирование иконки и т.д.), то пиши лучше статью, nikkie там советовал о чем можно рассказать


 
Piter ©   (2004-04-03 18:13) [40]

Панов, а это тобой написанный пример: http://home.ural.ru/~panov/icontray.html ?
Для FAQ"а пример, имхо, слишком сложен. И совершенно не понимаю - зачем WindowProc переназначать?!
Если хочешь все расписать (анимирование иконки и т.д.), то пиши лучше статью, nikkie там советовал о чем можно рассказать


 
panov ©   (2004-04-04 01:56) [41]

>Piter ©   (03.04.04 18:13) [40]

Панов, а это тобой написанный пример: http://home.ural.ru/~panov/icontray.html ?

Ну не знаю... Если есть более простой вариант готовой программы - предлагай.

Но он должен быть полностью функционален.

Если хочешь с копирайтами, то сделаем копирайт.-)
С этим никаких проблем.

Статья твоя обязательно будет с копирайтом.
Да и другие ответы, если автор будет известен, будут отмечены копирайтами.


 
panov ©   (2004-04-04 01:56) [41]

>Piter ©   (03.04.04 18:13) [40]

Панов, а это тобой написанный пример: http://home.ural.ru/~panov/icontray.html ?

Ну не знаю... Если есть более простой вариант готовой программы - предлагай.

Но он должен быть полностью функционален.

Если хочешь с копирайтами, то сделаем копирайт.-)
С этим никаких проблем.

Статья твоя обязательно будет с копирайтом.
Да и другие ответы, если автор будет известен, будут отмечены копирайтами.


 
Rouse_ ©   (2004-04-04 02:14) [42]

Постараемся сделать с копирайтами - по крайней мере та часть, которая идет от меня будет точно...

Вот кстати вопрос для всех (и для Александра тоже, как составляющего FAQ)

Стоит ли вносить некоторые ответы из Озерского (Кулибы) в FAQ.
Сегодня консультировался с Анатолием Подгорецким, точного мнения мы не выработали...

А также, мое ИМХО, стоит попросить автора DelphiWorld на использование его статей (собранных им статей) для использование в FAQ (части их)


 
Rouse_ ©   (2004-04-04 02:14) [42]

Постараемся сделать с копирайтами - по крайней мере та часть, которая идет от меня будет точно...

Вот кстати вопрос для всех (и для Александра тоже, как составляющего FAQ)

Стоит ли вносить некоторые ответы из Озерского (Кулибы) в FAQ.
Сегодня консультировался с Анатолием Подгорецким, точного мнения мы не выработали...

А также, мое ИМХО, стоит попросить автора DelphiWorld на использование его статей (собранных им статей) для использование в FAQ (части их)


 
Piter ©   (2004-04-04 12:23) [43]

panov (04.04.04 01:56) [41]
Если есть более простой вариант готовой программы - предлагай


1) я уже предложил, есть в письме.
2) зачем в примере перекрывать оконную процедуру? То есть, понятно для чего - чтобы WM_SYSCOMMAND обрабатывать. Но нужно ли это в примере?  Человек иконку не может добавить, а тут какую-то оконную процедуру перекрывают...
3)
case aAction of
   NIM_ADD:  Shell_NotifyIcon(NIM_ADD, @nid);        //Добавление иконки
   NIM_DELETE:  Shell_NotifyIcon(NIM_DELETE, @nid);  //Удаление иконки
   NIM_MODIFY:  Shell_NotifyIcon(NIM_MODIFY, @nid);  //Модификация иконки
 end;


А нельзя просто написать вместо всего этого кода Shell_NotifyIcon(aAction, @nid); ?

И пример вообще сложный. Там используются, имхо, ненужные навороты, типа RegisterWindowMessage с формированием уникальной строки и тому подобное. Все на множество процедур разбито. Оно, конечно, правильно, но нагромождает элементарный код. Нужно мне кажется выделить сам ответ на вопрос, а уж всякие навороты - это отдельно, чтобы не мешали восприятию


 
Piter ©   (2004-04-04 12:23) [43]

panov (04.04.04 01:56) [41]
Если есть более простой вариант готовой программы - предлагай


1) я уже предложил, есть в письме.
2) зачем в примере перекрывать оконную процедуру? То есть, понятно для чего - чтобы WM_SYSCOMMAND обрабатывать. Но нужно ли это в примере?  Человек иконку не может добавить, а тут какую-то оконную процедуру перекрывают...
3)
case aAction of
   NIM_ADD:  Shell_NotifyIcon(NIM_ADD, @nid);        //Добавление иконки
   NIM_DELETE:  Shell_NotifyIcon(NIM_DELETE, @nid);  //Удаление иконки
   NIM_MODIFY:  Shell_NotifyIcon(NIM_MODIFY, @nid);  //Модификация иконки
 end;


А нельзя просто написать вместо всего этого кода Shell_NotifyIcon(aAction, @nid); ?

И пример вообще сложный. Там используются, имхо, ненужные навороты, типа RegisterWindowMessage с формированием уникальной строки и тому подобное. Все на множество процедур разбито. Оно, конечно, правильно, но нагромождает элементарный код. Нужно мне кажется выделить сам ответ на вопрос, а уж всякие навороты - это отдельно, чтобы не мешали восприятию


 
nikkie ©   (2004-04-04 15:32) [44]

>зачем в примере перекрывать оконную процедуру? То есть, понятно для чего - чтобы WM_SYSCOMMAND обрабатывать.

странный вывод. оконная процедура перекрывается для обработки сообщений, значение которых не константа, а получено с помощью RegisterWindowMessage. WM_SYSCOMMAND проще обработать с помощью процедуры, объявленной с ключевым словом message.

кстати, только сейчас заметил - во всех приведенных примерах отсутствует обработка сообщения RegisterWindowMessage("TaskbarCreated"), а это полезная вещь.

Taskbar Creation Notification

With Microsoft® Internet Explorer 4.0 and later, the shell notifies applications that the taskbar has been created. When the taskbar is created, it registers a message with the "TaskbarCreated" string and then broadcasts this message to all top-level windows. When your taskbar application receives this message, it should assume that any taskbar icons it added have been removed and add them again. This feature generally applies only to services that are already running when the shell begins execution. The following example shows a very simplified method for handling this case.

LRESULT CALLBACK WndProc(HWND hWnd, UINT uMessage, WPARAM wParam,
   LPARAM lParam)
{
static UINT s_uTaskbarRestart;

switch(uMessage)
   {
   case WM_CREATE:
       s_uTaskbarRestart = RegisterWindowMessage(TEXT("TaskbarCreated"));
       break;
       
   default:
       if(uMessage == s_uTaskbarRestart)
           AddTaskbarIcons();
       break;
   }
return DefWindowProc(hWnd, uMessage, wParam, lParam);
}

(MSDN, статья Handling the Taskbar)

кстати, по поводу терминологии - микрософт пытается бороться со словом "трей"
The taskbar notification area is sometimes erroneously called the "tray."
(MSDN, статья Shell_NotifyIcon)
но, наверное, это бесполезно :)


 
nikkie ©   (2004-04-04 15:32) [44]

>зачем в примере перекрывать оконную процедуру? То есть, понятно для чего - чтобы WM_SYSCOMMAND обрабатывать.

странный вывод. оконная процедура перекрывается для обработки сообщений, значение которых не константа, а получено с помощью RegisterWindowMessage. WM_SYSCOMMAND проще обработать с помощью процедуры, объявленной с ключевым словом message.

кстати, только сейчас заметил - во всех приведенных примерах отсутствует обработка сообщения RegisterWindowMessage("TaskbarCreated"), а это полезная вещь.

Taskbar Creation Notification

With Microsoft® Internet Explorer 4.0 and later, the shell notifies applications that the taskbar has been created. When the taskbar is created, it registers a message with the "TaskbarCreated" string and then broadcasts this message to all top-level windows. When your taskbar application receives this message, it should assume that any taskbar icons it added have been removed and add them again. This feature generally applies only to services that are already running when the shell begins execution. The following example shows a very simplified method for handling this case.

LRESULT CALLBACK WndProc(HWND hWnd, UINT uMessage, WPARAM wParam,
   LPARAM lParam)
{
static UINT s_uTaskbarRestart;

switch(uMessage)
   {
   case WM_CREATE:
       s_uTaskbarRestart = RegisterWindowMessage(TEXT("TaskbarCreated"));
       break;
       
   default:
       if(uMessage == s_uTaskbarRestart)
           AddTaskbarIcons();
       break;
   }
return DefWindowProc(hWnd, uMessage, wParam, lParam);
}

(MSDN, статья Handling the Taskbar)

кстати, по поводу терминологии - микрософт пытается бороться со словом "трей"
The taskbar notification area is sometimes erroneously called the "tray."
(MSDN, статья Shell_NotifyIcon)
но, наверное, это бесполезно :)


 
Игорь Шевченко ©   (2004-04-04 17:41) [45]

nikkie ©   (04.04.04 15:32)

Вопрос: "Как засунуть иконку в область уведомлений таскбара" как-то не звучит...


 
Игорь Шевченко ©   (2004-04-04 17:41) [45]

nikkie ©   (04.04.04 15:32)

Вопрос: "Как засунуть иконку в область уведомлений таскбара" как-то не звучит...


 
Piter ©   (2004-04-04 17:52) [46]

nikkie (04.04.04 15:32) [44]
. оконная процедура перекрывается для обработки сообщений, значение которых не константа, а получено с помощью RegisterWindowMessage


ага, стормозил. Но по прежнему считаю, что в FAQ это лишний наворот. Вот в статье можно упомянуть.


 
Piter ©   (2004-04-04 17:52) [46]

nikkie (04.04.04 15:32) [44]
. оконная процедура перекрывается для обработки сообщений, значение которых не константа, а получено с помощью RegisterWindowMessage


ага, стормозил. Но по прежнему считаю, что в FAQ это лишний наворот. Вот в статье можно упомянуть.


 
nikkie ©   (2004-04-04 19:07) [47]

>Игорь Шевченко
я и говорю - бороться бесполезно :)
тем более, когда в самом MSDN встречается
"HOWTO: Manipulate Icons in the System Tray with Visual Basic"


 
nikkie ©   (2004-04-04 19:07) [47]

>Игорь Шевченко
я и говорю - бороться бесполезно :)
тем более, когда в самом MSDN встречается
"HOWTO: Manipulate Icons in the System Tray with Visual Basic"


 
panov ©   (2004-04-09 13:50) [48]



 
panov ©   (2004-04-09 13:50) [48]



 
panov ©   (2004-04-18 16:09) [49]



 
panov ©   (2004-04-18 16:09) [49]




Страницы: 1 2 вся ветка

Форум: "Потрепаться";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.65 MB
Время: 0.041 c
14-1081925575
Мараканец
2004-04-14 10:52
2004.05.09
Блокировка данных....


3-1081944840
Flashas
2004-04-14 16:14
2004.05.09
dbgrid i mouseweel...


3-1081505156
Сапёр
2004-04-09 14:05
2004.05.09
Calculated in Table


1-1082700177
webpauk
2004-04-23 10:02
2004.05.09
OnClick


14-1082505360
sashko
2004-04-21 03:56
2004.05.09
Разработка интернет-приложений в Delphi





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский