![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поймать событие сворачивания/разворачивания окна [D6, WinXP]
Creep1 © (2005-07-21 21:33:00)Здраствуйте мастера.
Помогите пожалуйста обработать клик по кнопке сворачивание/разворачивание окна.
Creep1 (2005-07-21 22:34:00) [1]Большое спасибо! вроде все работает.
begin...end (2005-07-21 22:15:00) [2]> Creep1 (21.07.05 22:05) [4]
Единственное, что я понял -- речь идёт всё же о форме.
Вот пример для сворачивания:
type
TForm1 = class(TForm)
private
procedure WMSysCommand(var Message: TMessage); message WM_SYSCOMMAND;
...
end;
procedure TForm1.WMSysCommand(var Message: TMessage);
begin
if Message.WParam and $FFF0 = SC_MINIMIZE then
// Если неважно, ЧТО вызвало сворачивание окна -- нажатие кнопки
// "Свернуть" или что-либо другое, то следующую строку нужно убрать
if SendMessage(Handle, WM_NCHITTEST, 0, Message.LParam) = HTMINBUTTON then
// Тут -- код по обработке события
inherited
end
Для разворачивания -- то же самое, только с SC_ MAXIMIZE и HT MAXBUTTON.
Creep1 (2005-07-21 22:05:00) [3]Мене нужно что когда пользователь кликал на свернуть/развернуть,
запускалась моя процедура.
Например когда форма создается есть событие onCreate,
вот мне надо тоже только с сверуть/развернуть.
Я конечно фигово выразился :) ну надеюсь что хоть чучуть понятно.
begin...end (2005-07-21 21:54:00) [4]> Creep1 (21.07.05 21:47) [2]
ОК. Но сначала ответьте на несколько уточняющих вопросов:
1. Нужно перехватить именно КЛИК НА КНОПКЕ "Свернуть", или нужно просто ОТЛОВИТЬ СОБЫТИЕ свёртывания окна? Это я к тому, что окно может быть свёрнуто и без нажатия на кнопку "Свернуть" -- например, выбором соответствующего пункта в системном меню.
2. Речь идёт об окне (которое создано Вами на API) или о форме?
Creep1 (2005-07-21 21:47:00) [5]Пожалуйста чуть по подробней, а то я не въезжаю.
begin...end (2005-07-21 21:36:00) [6]WM_SYSCOMMAND