СообЧа > База Знаний > Программирование > Delphi

Вопрос

Как заставить форму находиться позади всех окон в системе, даже если на ней происходят какие-либо события (нажатие кнопки, ввод текста, etc.)?

Ответ

Цитата из MSDN:
An application cannot activate an inactive window without also bringing it to the top of the Z order. Applications can change an activated window's position in the Z order without restrictions, or it can activate a window and then move it to the top of the topmost or non-topmost windows.
Поэтому при любой активации окна нужно будет вручную изменять Z-order.
Для этого достаточно висеть на WM_ACTIVATE и при активации окна помещать последнее вниз Z-order'а:

SetWindowPos(
Handle, // здесь указать хэндл окна формы
HWND_BOTTOM,
0, 0, 0, 0,
SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE or SWP_NOREDRAW);


Novikov Dmitry



Copyright © 2000-2004 Сообщество Чайников
Контактная информация