![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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 ты попробуй сразу форму не создавать. в начале делай свой трей, а потом, когда в трей поступит сообщение, создавай форму