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

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2003.09.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.008 c
14-10970
Mr&MsGuns
2003-08-15 14:27
2003.09.04
Нужен компонент


6-10854
Label
2003-06-23 16:56
2003.09.04
Delphi и метод POST


6-10865
AlexGof
2003-06-30 13:35
2003.09.04
как переименовать Attachments фай в NMPOP3 Fastnet


8-10844
dronas555
2003-05-06 12:08
2003.09.04
Формат BMP


4-11023
Gefest
2003-07-04 09:46
2003.09.04
DBLCLICK в LISTBOX`е





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский