Главная страница
    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.44 MB
Время: 0.043 c
15-1185954112
dr Gonzo
2007-08-01 11:41
2007.08.26
Справочник по Delphi издательства O Reilly


15-1185354885
Kerk
2007-07-25 13:14
2007.08.26
Федор Черенков


2-1186317327
rosl
2007-08-05 16:35
2007.08.26
память не может быть "written".


2-1185619754
Draught
2007-07-28 14:49
2007.08.26
Убрать scrollbar у DBGrid


15-1185371357
Галинка
2007-07-25 17:49
2007.08.26
Посоветуйте книгу по Си





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский