Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.02;
Скачать: CL | DM;

Вниз

WndProc, WindowProc   Найти похожие ветки 

 
Akni ©   (2002-10-22 00:19) [0]

Привет Мастерам!

Помогите, пожалуйста, разобраться с такой проблемой: как отловить события (Mouse and Keyboard Events), посылаемые какой-то конкретной MDI-форме приложения.
Пытаюсь у всех контролов этой формы подменить WindowProc c помощью такого кода:

var WMyMessage:TMsg;

procedure TfrmMDIChild.ISWndProc(var message: TMessage);
begin
with message do
begin
if (msg=WM_LBUTTONDOWN)
or (msg=WM_LBUTTONUP)
or (msg=WM_LBUTTONDBLCLK)
or (msg=WM_RBUTTONDOWN)
or (msg=WM_RBUTTONUP)
or (msg=WM_RBUTTONDBLCLK)
then
begin
WMyMessage:=Message;
bNewMessage:=true;
end;
end;
Inherited WndProc(Message);
end;

procedure TfrmMDIChild.FormCreate(Sender: TObject);
var i: integer;
begin
for i:=0 to ControlCount-1 do
begin
Controls[i].WindowProc:=ISWndProc;
end;
end;


В итоге получаю Stack overflow...
Что я делаю не так и как с этим бороться?

Заранее всем спасибо.


 
apay ©   (2002-10-22 10:31) [1]

ставь хуки, об этом много писалось...


 
Игорь Шевченко ©   (2002-10-22 12:06) [2]

Надо для каждого control"a запоминать адрес его старой процедуры и вызывать ее а не inherited.


 
Akni ©   (2002-10-22 12:41) [3]

to Игорь Шевченко
sorry za glupii vopros, no kak zapomnit" adres staroi prozeduri?


 
MBo ©   (2002-10-22 12:46) [4]

Oldproc:=Controls[i].WindowProc;
Controls[i].WindowProc:=NewProc;



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

Текущий архив: 2002.12.02;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.013 c
1-4475
Explorer
2002-11-20 13:04
2002.12.02
Экспорт в Excel XP для FastReport


7-4650
Evolution Q
2002-09-27 15:05
2002.12.02
Помогите с отключением мыши!


4-4681
Akni
2002-10-22 00:19
2002.12.02
WndProc, WindowProc


7-4651
max2057
2002-09-30 13:01
2002.12.02
TdxMasterView and Drag-n-Drop


1-4377
Ученик
2002-11-22 11:27
2002.12.02
Представление данных в XML-формате