Главная страница
    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.45 MB
Время: 0.048 c
15-1185454046
Kostafey
2007-07-26 16:47
2007.08.26
Как узнать название материнки ?


1-1181888482
JanMihail
2007-06-15 10:21
2007.08.26
Смена иконки папки под Vista


2-1185554076
master_asasin
2007-07-27 20:34
2007.08.26
ImageList - добавление картинок в RunTime


15-1185274519
Kerk
2007-07-24 14:55
2007.08.26
2800 квадратных метров ткани


2-1185742968
mfender
2007-07-30 01:02
2007.08.26
Integer в минуты средствами SQL в MSSQL





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский