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

Вниз

Перехват нажатия системной кнопки "свернуть"   Найти похожие ветки 

 
BAYES   (2004-08-04 14:14) [0]

Здраствуйте.
Мне нужно при нажатии кнопки "свернуть", как-нибудь перехватить нажатие и не свернуть окно, а спрятать (Showwindow(findwindow(nil,"бла-бла"),SW_HIDE);


 
Labert   (2004-08-04 14:22) [1]


TMainForm = class(TForm)
....
 procedure WMMinimize(var Message: TMessage); message WM_SYSCOMMAND;
....
end;

implementation

//обработчик минимизации окна
procedure TMainForm.WMMinimize(var Message: TMessage);
begin
if Message.WParam = SC_MINIMIZE then
 DoSomething
else
 inherited
end;



 
Юрий Зотов ©   (2004-08-04 14:28) [2]

> Labert   (04.08.04 14:22) [1]

Remarks
...
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.


if Message.WParam and $FFF0 = SC_MINIMIZE then ...


 
BAYES   (2004-08-04 14:38) [3]

Видел все это в справке, а и в и-нете, везде одно и тоже написано. Но мне, ввиду малого профессионализма,это не очень понятно.Я без зазрения совести просто воткнул этот код,компилятор ругается...!?

Labert   (04.08.04 14:22) [1]
Не мог ли пояснить немного (если не влом).


 
Sandman25 ©   (2004-08-04 14:41) [4]

[2] Юрий Зотов ©   (04.08.04 14:28)

То есть в описании TWMSysCommand ошибка?


 
Sergey Kaminski ©   (2004-08-04 14:47) [5]

Sandman25 ©   (04.08.04 14:41) [4]
Почему ошибка?


 
Sandman25 ©   (2004-08-04 14:56) [6]

TWMSysCommand = packed record
   Msg: Cardinal;
   case CmdType: Longint of
     SC_HOTKEY: (
       ActivateWnd: HWND);
     SC_KEYMENU: (
       Key: Word);
     SC_CLOSE, SC_HSCROLL, SC_MAXIMIZE, SC_MINIMIZE, SC_MOUSEMENU, SC_MOVE,
     SC_NEXTWINDOW, SC_PREVWINDOW, SC_RESTORE, SC_SCREENSAVE, SC_SIZE,
     SC_TASKLIST, SC_VSCROLL: (
       XPos: Smallint;
       YPos: Smallint;
       Result: Longint);
 end;

Нет учета особенности тех самых 4 битов.


 
Labert   (2004-08-04 15:12) [7]

2 BAYES  
а что за ошибка? что компилятор говорит?

2 Юрий Зотов
Замечание принимаю...
Это вы откуда, из MSDNа взяли?


 
Labert   (2004-08-04 15:13) [8]

Проглядел сообщение Sandman25...
Получается что все-таки мой вариант правильный...


 
BAYES   (2004-08-04 15:34) [9]

Все разобрался, полазил по справкам, по талмудам.

У меня вышло вот так.

...
procedure WMMinimize(var Message: TMessage); message WM_SYSCOMMAND;
...
implementation

{$R *.dfm}

procedure TForm1.WMMinimize(var Message: TMessage);
begin
if Message.WParam = SC_MINIMIZE then form1.Visible:=False
Else Inherited;
end;


 
BAYES   (2004-08-04 15:35) [10]

Конечно вопрос был поставлен коряво. Простите. Пасиба всем.


 
Юрий Зотов ©   (2004-08-04 15:53) [11]

> Sandman25 ©   (04.08.04 14:56) [6]

Почему ошибка? Невозможно ведь выделить подполя размером в 3.5 и 0.5 байта, вот они и не выделены. А в исходниках самой VCL везде стоит and $FFF0.

> Labert   (04.08.04 15:12) [7]

Из обычной справки по WM_SYSCOMMAND. Но и в MSDN, естественно, сказано то же самое.


 
Sandman25 ©   (2004-08-04 15:57) [12]

[11] Юрий Зотов ©   (04.08.04 15:53)

Понятно.



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

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

Наверх





Память: 0.47 MB
Время: 0.035 c
1-1092106071
Марат
2004-08-10 06:47
2004.08.22
Перенос label


14-1091688422
Slider007
2004-08-05 10:47
2004.08.22
Вопрос по поводу кабеля (витая пара)


14-1091619964
Гость
2004-08-04 15:46
2004.08.22
Загрузка XML на SQL Server с помощью Delphi 7


1-1091976962
DeMoN_Astra
2004-08-08 18:56
2004.08.22
Log - и


6-1086379883
Николай
2004-06-05 00:11
2004.08.22
Хочу попробывать написать фаервол.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский