|
Вопрос # 4 416/ вопрос открыт / |
|
Здравствуйте, эксперты!
Появилась необходимость перехватить нажатие кнопок разворачивания/сворачивание/восстановления mdiChild
или - определить момент добавление/удаление этих кнопок в MainMenu
2х недельное копание в исходниках дало очень много и ничего.
замечу - сообщения WM_MDI* к этому не относятся, т.е. создание перехватчика для MainForm и клиентской части ни к чему не привело.
:(
определил только одно - что при изменении mdiChild, в ClientHandle передается сообщение WM_SIZE, но при обработке сообщение не получается определить кто его послал или кому оно идет
вот код перехватывания в клиентской части:
Приложение: Переключить в обычный режим- MyClass = class(TCustomControl)
- OldWinProc, NewWinProc: Pointer;
- procedure NewWinProcedure(var Msg: TMessage);
-
- constructor MyClass.Create(AOwner : TComponent);
- begin
- NewWinProc := MakeObjectInstance (NewWinProcedure);
- OldWinProc := Pointer (SetWindowLong (
- ClientHandle, GWL_WNDPROC, Cardinal (NewWinProc)));
- end;
-
- procedure MyClass.NewWinProcedure(var Msg: TMessage);
- //var
- //mdi : ^MDICREATESTRUCT;
- //wc : TWinControl;
- begin
-
- Msg.Result := CallWindowProc ( OldWinProc,
- ClientHandle, Msg.Msg, Msg.wParam, Msg.lParam);
-
-
- if Msg.Msg = WM_MDISETMENU then
- ShowMessage('ok');
-
- end;
-
-
 |
Вопрос задал: Тарасов Андрей (статус: Посетитель)
Вопрос отправлен: 12 июля 2010, 18:07
Состояние вопроса: открыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 3; последнее сообщение — 12 июля 2010, 19:05; участников в обсуждении: 2.
|
min@y™ (статус: Доктор наук), 12 июля 2010, 18:25 [#1]:
Чой-то не вижу в ентом куске кода обработчика сообщения WM_SYSCOMMAND... Не знаю, как оно там с MDIChild-окнами, но попробуй, вдруг чо получится.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Тарасов Андрей (статус: Посетитель), 12 июля 2010, 18:36 [#2]:
перехват WM_SYSCOMMAND тоже ничего не дал...
точнее в обработчике MainForm он дал возможность перехватить нажатие на оконные кнопки в MainMenu, но не момент их создания/уничтожения.
В клиентской зоне это сообщение не обрабатывается :/
|
|
Тарасов Андрей (статус: Посетитель), 12 июля 2010, 19:05 [#3]:
Короче я докопался до одного момента - все обрабатывает DefMDIChildProc, эта функция вызывается для обработки изменения размера.
Осталось придумать как глобально подменить эту функцию своей.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|