![]() |
Проблема с передачей фокуса окну
Существует необходимость вывести окно на передний план при возникновении определенного события.
Метод SetFocus() не канает- когда окно под другими окнами, на передний план не выскакивает. FormStyle = fsStayOnTop тоже не подходит - окно выводится на передний план, но закрепляется поверх всех окон, что крайне нежелательно. Что делать? Кодю в Borland C++ Builder 6 |
Есть ф-я в ВиньАПИ SetWindowPos там есть параметер HWND hWndInsertAfter второй по счету(нач. с 1) ставиш - HWND_TOPMOST и все.
|
Пасиб, будем пробовать.
|
Цитата:
|
Так, обо всем по порядку.
Испробованы способы: SetActiveWindow(MainForm->Handle) - не хочет SetForegroundWindow(...) - тоже не пашет SetWindowPos(...) - ни в какую Но мы не сдаемся и пошли дальше: SendMessage(MainForm->Handle, WM_ACTIVATE, 0, 0) - ноль эмоций Какие еще способы остались? :idontnow: P.S. Заголовочный файл winuser.h подключен. |
Цитата:
SetForegroundWindow(Hwnd) выводит (видимое ,не свернутое) окно на передний план, и делает его активным. |
Окно банально скрыто под другими окнами - то бишь Application->Active = false;
Не свернуто! Для этого выполняется проверка WindowState = wsMinimized. Если окно свернуто - Application->Restore() - кривовато конечно, но эта хрень вроде работает по крайней мере. Все способы, основанные на WinAPI - принципиально отказываются... |
А если попробовать события формы. На пример, Click() ?
|
Можно конечно попробовать...
Но это ж через ж..у, простите. Непонятно, какого хрена апишные функции работать не хотят. Вот так всегда, самую сложную часть проги написали за день, а с вроде бы фигней трахаемся уже неделю... |
Цитата:
|
Будем пробовать. Другой альтернативы нет. Спасибо.
|
Цитата:
|
У меня в VB похожая проблема. В винде это называется "программа ожидает ввода информации". В этот момент в строке пуска мигает кнопка. Так?
:biggrin: Если так, то я выхожу слд. образом: Form1.Show. Это не правильно, но работает. Если не срабатывает, можно сделать раз десять :biggrin: |
Ага, после вызова SetForegroundWindow() действительно моргает кнопка на панели задач. Попробую твой способ, авось поможет...
Альтернатив не так уж много осталось. |
|
Пасиб, испробуем.
|
Цитата:
|
| Часовой пояс GMT +4, время: 23:10. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.