Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TrayIcon [D7, WinME]


Adolf ©   (2003-01-19 14:10:00) 

Здравствуйте уважаемые программеры!
----------------------------------------------------------------
Прога сидит в автозапуске...допустим...
----------------------------------------------------------------
...То же, что когда запускаешь прогу, надо чтоб она сразу пряталась в Tray. Без всяких там миганий типа visible:=false или таймеров с интервалом 1...
Пробовал я SW_HIDE в form.activate, и form.create :)) но ошибка сама собой вылазит.
Как быть?


Юрий Зотов   (2003-01-20 06:05:00) [1]

> а хендл форму не обязателен

А знаете, у САМОЙ формы ведь и хэндла-то никакого нет. Хэндл есть у ее ОКНА. А хэндл окна - обязателен. Что Вы сами и подтвердили строкой FHandle := AllocateHWnd(WndProcTray).




Avenger [NhT]   (2003-01-20 02:19:00) [2]

Иконка исчезает потомучто нет обработчика сообщений, а хендл форму не обязателен, я делал в своем компоненте так:

constructor TAvlTrayIcon.Create;
begin
WM_TASKBARCREATED := RegisterWindowMessage("TaskbarCreated");
FHandle := AllocateHWnd(WndProcTray);
end;


вот тебе и хендл и проц-а обработки ошибок!


Adolf   (2003-01-19 22:26:00) [3]

> Юрий Зотов
Геньяльно!Чтоб я, чайник, делал без ЭТОГО форума?


neodiX   (2003-01-19 15:21:00) [4]


> Могу подсказать: хэндлы - они ведь разные бывают.

Понял. Ну что ж спасибо за поправки, виндо мне еще долго учиться.


Юрий Зотов   (2003-01-19 15:10:00) [5]

Ну, что ж, комментировать не буду. Думаю, в процессе "разбирания, как сделать что бы иконка в трее не исчезала при наводении мыши" Вы сами поймете, что написали.

Кстати, предстоит разобраться еще и с тем, а как при шелчке по иконке хоть что-нибудь сделать. Тоже поспособствует пониманию.

Могу подсказать: хэндлы - они ведь разные бывают.


neodiX   (2003-01-19 14:48:00) [6]

2 Юрий Зотов :
program project2;
uses windows, shellapi;
{$R *.res}
var
Inst : Integer;
stray : NOTIFYICONDATA;
Msg : TMsg;
begin
Inst:=hInstance;
Stray.cbSize:=sizeof(NOTIFYICONDATA);
Stray.Wnd:=Inst;
Stray.uID:=7;
Stray.uFlags:=7;
Stray.uCallbackMessage:=$200;
Stray.hIcon:=LoadIcon(inst, "MAINICON");
Stray.szTip:="My prog";
Shell_NotifyIcon(0,@stray);
while (GetMessage(Msg, inst, 0, 0)) do
begin
TranslateMessage(msg);
DispatchMessage(msg);
end;
Shell_NotifyIcon(2,@stray);
end.

только я еще не разобрался как сделать что бы иконка в трее не исчезала при наводении мыщи


Юрий Зотов   (2003-01-19 14:35:00) [7]

> neodiX © (19.01.03 14:21)

Sorry, а Вы не подскажете, что нужно прописать в поле Wnd, если ни одного окна еще нет? И куда будет поступать сообщение, о котором Вы говорите? И что такое "свой трей"? И какие такие сообщения в него поступают?

В общем, sorry once more, но что ни слово, то беда. Зачем такие ответы?


> Adolf

В обработчике OnCreate напишите:
Application.ShowMainForm := False
и там же сажайте в трей свою иконку. Вот и все. А здесь пример:
http://www.delphikingdom.com
(см. раздел "Hello, Woirld!", а в нем - примеры работы с WinAPI).


neodiX   (2003-01-19 14:21:00) [8]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо