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

Вниз

Обработка сообщений   Найти похожие ветки 

 
Eugenepm   (2007-08-03 10:25) [0]

Здравствуйте, у меня возникла такая проблема
- нужно вручную обрабатывать сообщения в Delphi с
использованием форм - есть n-количество сообщений
WM_MYMSG..WM_MYMSG+(n-1) - и на все мне надо поставить
один обработчик(n - известно на этапе компиляции!) - я
знаю как ставить на одно, а как привязать к диапазону сообщений?

Вот как можно вручную(привожу на всякий случай - просто словами сложнее описать :) ), но я не хочу отказываться от формы

function WndProc(myhwnd:HWND; myuint:UINT; mywparam:WPARAM; mylparam:LPARAM):LRESULT; stdcall
begin
  case myuint of
    WM_CREATE:begin randomize; result:=0; exit;  end;
    WM_DESTROY:begin  JEndJSocks; PostQuitMessage(0); result:=0; exit; end;
    WM_MYMSG..WM_MYMSG+N: begin JProcessSocketMsg(myhwnd,myuint,mywparam,mylparam); result:=0; exit; end;
  end;
 result:=DefWindowProc(myhwnd,myuint,mywparam,mylparam);
end;


 
Dib@zol ©   (2007-08-03 10:32) [1]

var
 PFWP : Pointer;

...

longInt(PFWP):=SetWindowLong(Form1.handle, GWL_WNDPROC, longInt(@WndProc));

...

function WndProc(myhwnd:HWND; myuint:UINT; mywparam:WPARAM; mylparam:LPARAM):LRESULT; stdcall
begin
 case myuint of
   WM_CREATE:begin randomize; result:=0; exit;  end;
   WM_DESTROY:begin  JEndJSocks; PostQuitMessage(0); result:=0; exit; end;
   WM_MYMSG..WM_MYMSG+N: begin JProcessSocketMsg(myhwnd,myuint,mywparam,mylparam); result:=0; exit; end;
   else result:=CallWindowProc(PFWP, myhwnd,myuint,mywparam,mylparam);
 end;
end;

Вуаля!


 
Ping   (2007-08-03 10:33) [2]

А это называется "отказаться от формы"? Кхм...

property TWinControl.DefWndProc: Pointer;
procedure TControl.WndProc(var Message: TMessage); virtual;
procedure TObject.Dispatch(var Message); virtual;

Выбирай...


 
Leonid Troyanovsky ©   (2007-08-03 12:26) [3]


> Eugenepm   (03.08.07 10:25)  

> Вот как можно вручную(привожу на всякий случай - просто

Перекрой форме метод WndProc; override.
Аналог твоего DefWindowProc - inherited;
Кста, для собс-ручных сообщений оный вызов излишен.

--
Regards, LVT.



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

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

Наверх




Память: 0.47 MB
Время: 0.027 c
15-1185955014
ProgRAMmer Dimonych
2007-08-01 11:56
2007.08.26
Совсем тупой вопрос


15-1185858638
Slider007
2007-07-31 09:10
2007.08.26
С днем рождения ! 31 июля 2007 вторник


2-1186124889
dimaL
2007-08-03 11:08
2007.08.26
Закрытие дочерней формы


2-1185780445
andreyka
2007-07-30 11:27
2007.08.26
Удаление записи в реестре


15-1185396793
Petr V. Abramov
2007-07-26 00:53
2007.08.26
выхухоли