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

Вниз

Код системных кнопок   Найти похожие ветки 

 
AquaSun7   (2003-02-21 03:50) [0]

Уважаемые мастера, подскажите как изменить код системных кнопок основной формы, например, кнопки минимизации. Или может быть сделать собственную кнопку с обработчиком, за место основных?


 
Sha   (2003-02-21 08:33) [1]

{ 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;
}
procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;
.........................
procedure TForm1.WMSysCommand(var Message: TWMSysCommand);
begin;
inherited;
end;


 
Alex44   (2003-02-21 10:00) [2]


> Sha


U menya eto pochemu-to ne prohodilo. Takoe oshushenie, chto Application perehvatyvaet eto sobytie u glavnoj formy. S menu udaetsya spravlyat"sya, izmeniv ID"s Item"ov pri sozdanii okna.


 
AquaSun7   (2003-02-23 02:42) [3]

А как распознать, какое событие произошло (какой элемент меню System выбpан)?
WM_MAXIMIZE & WM_MINIMIZE не нашёл :(


 
Alex44   (2003-02-24 12:24) [4]

WM_SYSCOMMAND


 
AquaSun7   (2003-02-28 03:11) [5]

Спасибо, допекло :)

procedure TForm1.UserSysCommand(var MsgCmd: TMessage);
begin
If MsgCmd.WParamLo=61472 Then
... {Блок обработки минимизации}
Else
If (MsgCmd.WParamLo=61488) Or (MsgCmd.WParamLo=61490) Then
... {Блок обработки максимизации}
Else inherited; {Вызов стандартного обработчика при остальных случаях}
end;


Есть ещё вопрос:
Как заставить системную кнопку закрытия окна сделать недоступной?
Чтобы программа на Alt-F4 не реагировала, но кнопки минимизации и максимизации были бы доступны?


 
AquaSun7   (2003-03-01 02:36) [6]

По крайней мере, как затемнить кнопку закрытия окна?


 
Alex44   (2003-03-01 09:22) [7]

Poprobujte na WM_INITMENUPOPUP (chto-to v etom duhe...) libo sdelat" punkt s SC_CLOSE disabled libo voobshe ego ubrat". V prochem, ne uveren chto eto srabotaet.


 
Song   (2003-03-01 11:51) [8]

2AquaSun7 (01.03.03 02:36)
DeleteMenu()
EnableMenuItem()


 
AquaSun7   (2003-03-04 02:05) [9]

Song © (01.03.03 11:51)
Подскажи, как узнать IDEnableItem в EnableMenuItem для кнопок (метод тыка не помогает).

Пишу:
EnableMenuItem(GetSystemMenu(Handle,False), 0 {1,2, и т.д.} {61472,61536, и т.д.} ,
(mf_ByCommand
{mf_ByPosition} or mf_Grayed {mf_Enabled} ));


 
AquaSun7   (2003-03-05 02:09) [10]

Разобрался:
Пробовал логические операции (AND, OR), а надо было арифметические (+)

Получилось:
EnableMenuItem(GetSystemMenu(Handle,False), 61536,
(mf_ByCommand + mf_Disabled + mf_Grayed));
{Пассивное состояние = 0+2+1}

EnableMenuItem(GetSystemMenu(Handle,False), 61536,
(mf_ByCommand + mf_Enabled));
{Активное состояние = 0+0}

Правда на Alt-F4 в пассивном состоянии всё равно закрывает, но как этого избежать я уже знаю.



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

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

Наверх




Память: 0.46 MB
Время: 0.007 c
1-76924
Jogger
2003-04-11 09:37
2003.04.24
Как узнать


14-77107
Николай Быков
2003-04-03 15:53
2003.04.24
моддинг+клава+светодиоды+ком-порты+другие порты


14-77117
Начинающий програмер
2003-04-07 18:49
2003.04.24
Массивы


3-76859
Stas
2003-04-08 09:58
2003.04.24
Перекрестный запрос


1-77009
klyonov
2003-04-12 00:22
2003.04.24
Events в COM





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