Сейчас на форуме: (+5 невидимых) |
eXeL@B —› Программирование —› Сворачивание окна в Delphi |
Посл.ответ | Сообщение |
|
Создано: 25 июля 2007 21:40 · Личное сообщение · #1 Возможно-ли ПОЛНОСТЬЮ запретить сворачивание формы в Win2k/Xp и т.д., вот пробовал код: procedure TForm1.WMShowWindow(var Msg: TWMShowWindow); begin if not Msg.Show then Msg.Result := 0 else inherited; end; но при "свернуть все окна" (win+D) - всё равно сворачивается =( Во думаю, прикрутить таймер и это отслеживать, но как-то эт некрасиво ;), Может у кого есть идеи?? ЗЫ Во ищё, может кто знает, как запретить Alt+Tab в NT-системах, или как это обойти ;), чтоб моя форма постоянно была StayOnTop... |
|
Создано: 25 июля 2007 21:43 · Личное сообщение · #2 |
|
Создано: 25 июля 2007 21:52 · Поправил: alexey_k · Личное сообщение · #3 |
|
Создано: 25 июля 2007 22:03 · Личное сообщение · #4 alexey_k пишет: +таймер не понял, зачем тебе таймер? alexey_k пишет: эт ты насчёт Alt+Tab? да. посмотри, что делает эта функа. если во время вызывать например вот так: SetWindowPos(Application.Handle,HWND_TOPMOST,Left,Top,Width,Height, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE) то твое окно всегда будет OnTop. ----- invoke OpenFire |
|
Создано: 25 июля 2007 22:14 · Личное сообщение · #5 Ice-T пишет: не понял, зачем тебе таймер ну сначала сделал так: procedure TForm1.Restore(Sender: TObject); begin Application.Restore; end; procedure TForm1.Button1Click(Sender: TObject); begin Application.OnMinimize := Restore; end; НО! При Win+D прога разворачивается НЕ всегда , я так и не понял почему??? может - ось виновата - хз... поэтому и использовал таймер для проверки свёрнутости... ЗЫ вот интересно, а можно-ли ЗАПРЕТИТЬ сворачивание формы вообще? |
|
Создано: 25 июля 2007 22:28 · Личное сообщение · #6 alexey_k перехватываешь сообщение WMWINDOWPOSCHANGING вот так: procedure WMWINDOWPOSCHANGING
обработчик такой: SetWindowPos(Application.Handle,HWND_TOPMOST,Left,Top,Width,Height, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
это решает обе твои проблемы ----- invoke OpenFire |
|
Создано: 25 июля 2007 22:31 · Личное сообщение · #7 Ice-T пишет: если во время вызывать например вот так: SetWindowPos(Application.Handle,HWND_TOPMOST,Left,Top,Width,Height, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE) то твое окно всегда будет OnTop. решил вот как: procedure TForm1.Restore(Sender: TObject); begin Application.Restore; SetWindowPos(Application.Handle, HWND_TOPMOST, Left,Top,Width,Height, SWP_NOMOVE or SWP_NOSIZE) end; procedure TForm1.Create(Sender: TObject); begin Application.OnMinimize := Restore; Application.OnDeactivate := Restore; end; Ice-T спасибо за советы Собственно вопрос закрыт. |
|
Создано: 25 июля 2007 22:37 · Личное сообщение · #8 |
eXeL@B —› Программирование —› Сворачивание окна в Delphi |