Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.04;
Скачать: CL | DM;

Вниз

Трей, онтоп и все все все   Найти похожие ветки 

 
Rumata ©   (2003-07-01 19:35) [0]

Поиск по конференции и хелпу ничего не дал, так что прийдется спросить:

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

Главное окошко программы замечательно сворачивается в трей и уходит из таскбара при помощи shellnotifyicon, showwindow(application.handle, sw_hide) и showwindow(form1.handle, sw_hide). Потом, по таймеру наверх вылазиет другое окошко (из другого юнита) с параметром fsTop (что-то в этом роде). Но оно не остается поверх остальных, хотя если добть из трея главное окошко, то все работает правильно. Не помогает и WS_EX_TOPMOST который я пытаюсь ей выставить при создании (перехватываю CreateParams). По-видимому, проблема в том, что главное окошко находится в состоянии hide, но честно говоря, не понимаю, почему это должно мешать.


 
Poirot ©   (2003-07-01 20:22) [1]

дЕЛАЙ ОКНО SYSTEM_MODAL


 
Snap ©   (2003-07-01 20:27) [2]

V trej mozhno posadit cheres TTrayIcon.


 
Rumata ©   (2003-07-02 17:23) [3]

[b]Poirot[/b], спасибо, пойду пробовать.
[b]Snap[/b], а зачем? У меня и так неплохо получается =)) Проблем с треем нет, трабл в том, как это все вместе заставить работать

2all так а никто не знает, [i]почему[/i] сейчас не работает - почему не срабатывает exStyle := WS_EX_TOPMOST, если спрятано главное окошко программы?


 
Игорь Шевченко ©   (2003-07-02 17:28) [4]

На событии WM_ACTIVATE делай SetWindowPos(YourWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE) и будет тебе счастье


 
Rumata ©   (2003-07-02 17:47) [5]

Poirot, если Вы имели в виду делать вызов не Form2.Show, а Form2.ShowModal, то это не помогло.

Игорь Шевченко сделал так в своей формк Form2, которая долна появляться поверх всех написал в protected
procedure OnActivate(var msg: TMessage); message WM_ACTIVATE и ниже в коде procedure OnActivate(var msg: TMessage);
begin
SetWindowPos(YourWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE)
end;

Форма Form2 вызывается из формы Form1 (в этот момент Form1 находится в состоянии hide) через Form2.Show. Ваш код не помог, нет у меня счастья =( И, честно говоря, не понимаю, почему оно должно быть - моей форме Form2 сообщение WM_ACTIVATE вроде как приходить и не должно, она-то не активируется.


 
Rumata ©   (2003-07-02 21:04) [6]

Ну, в смысле не YourWnd, конечно =))) а Form2


 
Rumata ©   (2003-07-03 16:58) [7]

Все. Разум победил. Для этого ему (разуму) понядобилось к стилю Form2 присобачить WS_CLIPSIBLING и сделать Form2.Parent := GetDesctopWnd;
Теперь все работает, как надо.


 
Poirot ©   (2003-07-03 21:12) [8]

Удалено модератором
Примечание: Offtopic



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

Текущий архив: 2003.09.04;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.014 c
1-10708
pkert
2003-08-20 16:56
2003.09.04
Invalid pointer operation


4-11028
D.J.Star
2003-07-03 13:10
2003.09.04
Как проиграть PlaySound ом поток из памяти?


1-10807
BuTyc
2003-08-22 06:43
2003.09.04
Drag&Drop не цепляясь за шапку окна.


1-10749
Layner
2003-08-25 09:40
2003.09.04
Существует ли ф-я копирования файлов?


3-10556
byTural
2003-08-10 14:49
2003.09.04
Как обновить данные после отмены транзакции