Главная страница
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.017 c
15-1185897636
TStas
2007-07-31 20:00
2007.08.26
Находимость сайта в поискухе


2-1185733123
__Types
2007-07-29 22:18
2007.08.26
Удалить часть.


15-1183988140
mrhx
2007-07-09 17:35
2007.08.26
Визуальный редактор GUI с генерацией под разные платформы


2-1185809622
pukin
2007-07-30 19:33
2007.08.26
Parent для WebBrowsera


15-1185565636
MsGuns
2007-07-27 23:47
2007.08.26
Фильмы по произведениям Стругацких