Часто приходится сталкиваться с приложениями, которые размещают свое окно поверх окон других приложений независимо от того. какое именно из них является активным. Примером такого окна может служить окно Find (Найти) редактора Microsoft Word. Чтобы предусмотреть такую возможность, воспользуйтесь API-функцией SetWindowPos().
Private Declare Function SetWindowPos Lib "user32" _
(ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _
ByVal x As Long, ByVal у As Long, _
ByVal ex As Long, ByVal cy As Long, _
ByVal wFlags As Long) As Long
Параметр
hWnd — дескриптор окна, х и у — координаты левого верхнего угла окна, сх и су — ширина и высота окна соответственно. Параметр h WndInsertAfter — дескриптор окна, после которого окно hWnd
находится в списке окон. Параметр hWnd
может принимать одно из значений, указанных в табл. 13.5.
Таблица 13.5. Значения параметра hWnd
| Значение | Расположение окна | ||
| HWND_BOTTOM HWND_TOP HWND_TOPMOST
HWND_NOTOPMOST | Внизу списка окон
Поверх всех окон Наверху списка окон Наверху списка окон, под самым верхним окном |
Параметр wFlags является целочисленной константой, содержащей один или несколько флагов, приведенных в табл. 13.6.
Таблица 13.6. Флаги, составляющие параметр wFlags
| Флаг | Действие | ||
| SWP_DRAWFRAME | Рисует рамку окна | ||
| SWP_HIDEWINDOW | Скрывает окно | ||
| SWP_NOACTIVATE | Делает окно неактивным | ||
| SWP_JMOMOVE | Сохраняет координаты текущего положения окна (параметры х и у игнорируются) | ||
| SWP_NOREDRAW | Запрещает автоматическую перерисовку содержимого | ||
| окна | |||
| SWP_NOSIZE | Сохраняет данные о текущем размере окна | ||
| SWP_NOZORDER | Сохраняет текущее положение окна в списке других | ||
| окон | |||
| SWP_SHOWWINDOW | Отображает окно |
Совет
Можно скопировать значения констант из окна API Viewer непосредственно в ваше приложение. Избегайте задания числовых констант в вашем коде.
Текст программы типичного приложения WinTop, демонстрирующего использование функции SetWindowPos(), приведен ниже.
