Як зробити, щоб форма прилипала до країв екрану

Існує функція API Windows, яка дозволяє прив'язувати вікна до краю екрану. Тут застосовуються повідомлення Windows. Delphi робить обробку повідомлень легким, завдяки використанню подій, які зазвичай генеруються у відповідь на повідомлення Windows після того, як вона передає його в додаток.

Хоча багато повідомлення Windows обробляються Delphi, але деякі необхідно доопрацювати. Наприклад, ми дізнаємося, якщо форма змінить розмір (за допомогою події OnResize і обробці повідомлення WM_SIZE). Але як ми дізнаємося, що форма була переміщена? Delphi може отримати повідомлення, але спочатку нічого з ним не робить.

Повідомлення WM_MOVING надсилається вікна, коли користувач його переміщує. Обробляючи це повідомлення, додаток може відстежувати розмір і положення переміщуваного вікна і при необхідності, змінити його розмір або положення.

Повідомлення WM_WINDOWPOSCHANGING надсилається вікна, коли змінюється його розмір, положення або Z-порядок в результаті виклику функції SetWindowPos чи іншої функції управління вікном.

Простого повідомлення нам не достатньо, нам потрібно знати і інші параметри. Наприклад, повідомлення WM_MOVE говорить нам, що змінилася позиція у форми, але воно також має параметр LPARAM. який може нам дати X і Y позицію.

У повідомлення WM_WINDOWPOSCHANGING всього один параметр, який вказує на структуру WINDOWPOS. який містить інформацію про новий розмір і положенні вікна. Структура WINDOWPOS визначається так:

У нашому випадку, ми зробимо, щоб форма прилипала до краю екрану на певній відстані, наприклад, в 20 пікселах від краю.

повідомлення WM_WINDOWPOSCHANGING

Скасувати прилипання до якого-небудь краю екрану просто, потрібно лише видалити частину коду, який відповідає за свою ділянку.

SystemParametesInfo викликається з SPI_GETWORKAREA в якості першого параметра і отримує розмір робочої області екрана (Робочий стіл). Ми будемо використовувати його для визначення корисної площі за винятком панелі задач, панелей інструментів і т.д.

Код програми:

Тепер запустіть проект і переміщайте вікно до кордонів екрану, щоб подивитися ефект прилипання.

Схожі статті