| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > Активизация окон с помощью SetForegroundWindow |
| Автор: IvanVL 7.11.2005, 08:47 |
| По определенному событию (которое упешно отрабатывает) хочу вывести свое окно на передний план функциями: ShowWindow(H,SW_SHOWNORMAL), SetForegroundWindow(H), вместо появления, окно начинает мигать, но не вылазеет вперед, может какие то системные настройки надо покрутить |
| Автор: Rrader 7.11.2005, 09:00 |
| SetForegroundWindow должна прекрасно работать. Есть подозрение, что это событие, о котором шла речь, вызывается много раз, вот окно и мигает |
| Автор: Snowy 7.11.2005, 09:20 |
| Нет, Просто в XP по дефолту включена настройка "Запрещать программам похищать фокус". Поэтому вместо фокуса она начинает мигать. |
| Автор: IvanVL 7.11.2005, 09:26 | ||||
А где эта настройка находиться ? По подробней опишите, а то я такую даже ну помню, не то знаю где её поменять. Добавлено @ 09:29
Это я тоже проверю, но позже (возможно оно и так). |
| Автор: Snowy 7.11.2005, 09:44 | ||
HKEY_CURRENT_USER\Control Panel\Desktop Параметры: ForegroundFlashCount - сколько раз мигать (по дефолту 3) ForegroundLockTimeout - если поставить в 0, то будет сразу вылазить, без миганий. Но лучше воспользоваться стилем окна "StayOnTop" Так корректней, чем менять настройки системы. |
| Автор: Демо 7.11.2005, 10:01 | ||
| К сожалению, решение этой проблемы не найдено до сих пор, поэтому есть один трюк, который позволит решить вопрос: Пример одной реализации:
Добавлю, что MessageBox можно тут же по тайм-ауту закрывать, дабы не заставлять пользователя нажимать кнопки. |
| Автор: Snowy 7.11.2005, 10:14 |
| Можно еще поменять стиль окна на fsStayOnTop, а потом обратно. Тоже работает. И без всяких боксов. |
| Автор: Демо 7.11.2005, 10:33 | ||
Хорошая мысль. Надо проверить. А фокус ввода при этом окно получит? И еще надо восстановить точно предыдущий стиль. |
| Автор: IvanVL 7.11.2005, 11:07 |
| Спасибо за помощь |
| Автор: Girder 7.11.2005, 11:28 |
| AttachThreadInput: http://forum.vingrad.ru/index.php?showtopic=56552&view=findpost&p=450839 |