Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.01.30;
Скачать: [xml.tar.bz2];

Вниз

Как отловить сообщение о восстановлении/разворачивании окна?   Найти похожие ветки 

 
rolex   (2005-01-18 18:44) [0]

К примеру мне нужно, чтобы когда пользователь восстановит окно произошла комманда beep.


 
Юрий Зотов ©   (2005-01-18 19:12) [1]

Обрабатывайте WM_SYSCOMMAND.


 
rolex   (2005-01-18 20:01) [2]

А Как??? Дайте примерчик плз!!!


 
Юрий Зотов ©   (2005-01-18 20:11) [3]

type
 TForm1 = class(TForm)
   ...
 private
   procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;
   ...
 end;

procedure TForm1.WMSysCommand(var Message: TWMSysCommand);
begin
 inherited;
 if Message.CmdType and $FFF0 in [SC_MAXIMIZE, SC_RESTORE] then
   MessageBeep(0)
end;


 
begin...end ©   (2005-01-18 20:13) [4]

> [2] rolex   (18.01.05 20:01)

Восстановление:

type
 TForm1 = class(TForm)
 private
   { Private declarations }
   procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;
 public
   { Public declarations }
 end;

...

procedure TForm1.WMSysCommand(var Message: TWMSysCommand);
begin
 if Message.CmdType and $FFF0 = SC_RESTORE then
   Beep;
 inherited
end;


 
begin...end ©   (2005-01-18 20:14) [5]

> [3] Юрий Зотов ©   (18.01.05 20:11)

Ой, не видел Вашего ответа, когда писал свой.


 
olookin ©   (2005-01-18 20:17) [6]

[3] Юрий Зотов ©   (18.01.05 20:11)

Аналогичен ли Вашему этот код?

type
TForm1 = class(TForm)
  ...
end;
procedure MyMessage(var Msg: TMsg; var Handled: Boolean);

procedure TForm1.Create(ender: TObject);
begin
 Application.OnMessage:=MyMessage;
end;

procedure MyMessage(var Msg: TMsg; var Handled: Boolean);
begin
 if (Msg.message=WM_SYSCOMMAND) and
 (Msg.wParam=SC_MAXIMIZE) then MessageBeep(0);
end;

Похоже, что нет. С парамтером SC_RESTORE этот пример работает, а с параметром SC_MAXIMIZE вроде бы нет. Интересно узнать Ваше мнение.


 
Юрий Зотов ©   (2005-01-18 20:27) [7]

> olookin ©   (18.01.05 20:17) [6]

if (Msg.message = WM_SYSCOMMAND) and
 (Msg.wParam and $FFF0 = SC_MAXIMIZE) then ...

Из хелпа:

In WM_SYSCOMMAND messages, the four low-order bits of the uCmdType parameter are used internally by Windows. To obtain the correct result when testing the value of uCmdType, an application must combine the value 0xFFF0 with the uCmdType value by using the bitwise AND operator.


 
olookin ©   (2005-01-18 20:32) [8]

[7] Юрий Зотов ©   (18.01.05 20:27)

А, все стало ясно. Неясно лишь то, что при SC_RESTORE условие все же выполняется. А разве SC_RESTORE не есть такой же параметр для WM_SYSCOMMAND, как и SC_MAXIMIZE?


 
Юрий Зотов ©   (2005-01-18 20:37) [9]

> olookin ©   (18.01.05 20:32) [8]

> the four low-order bits of the uCmdType parameter are used
> internally by Windows.

А уж как она там их использует - это только ей известно. Иногда они и так нулевые, а иногда нет.


 
olookin ©   (2005-01-18 20:39) [10]

[9] Юрий Зотов ©   (18.01.05 20:37)

Ага, теперь все ясно...


 
rolex   (2005-01-18 21:53) [11]

Товарищи! Спасибо вам всем огромное! Помогли мне сильно!



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2005.01.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.034 c
9-1098600394
Ренат
2004-10-24 10:46
2005.01.30
Маштабирования спрайтов в DELPHIX


14-1105357402
stone
2005-01-10 14:43
2005.01.30
Материнская плата с Socket 370


3-1103943993
Guitar
2004-12-25 06:06
2005.01.30
Ошибка Key column information is insufficient or incorrect ... ?


11-1087991509
Boris
2004-06-23 15:51
2005.01.30
Присваиваю TBButtonText - не работает :(


6-1100011528
MegaVolt
2004-11-09 17:45
2005.01.30
Как сделать для каждого пользователя подкл. к серверу свой слиент





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский