Форум: "Начинающим";
Текущий архив: 2007.08.26;
Скачать: [xml.tar.bz2];
ВнизОбработка сообщений Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.049 c