
25.04.2009, 16:53
|
 |
Начинающий
|
|
Регистрация: 13.12.2008
Адрес: Туапсе
Сообщения: 161
Репутация: 20
|
|
Код:
type
TWndProc = function (Wnd : HWND; msg : Cardinal; wParam, lParam : Integer) : Integer; stdcall;
var
NextWindowProc : TWndProc;//Сюде сохраняем указатель на старую оконную процедуру
function WndProc(Wnd : HWND; msg : Cardinal; wParam, lParam : Integer) : Integer; stdcall;
begin
case msg of
WM_MOUSEWHEEL :
begin
//Обрабатываешь тут
//если ошибюсь, то hiword(wParam) - и есть нужный тебе параметр
//На всякий случай пеередаем управление оригинальному обработчику
Result := NextWindowProc(wnd, msg, wParam, lParam);
end;
else
Result := NextWindowProc(wnd, msg, wParam, lParam);
end;
end;
//эта функция уситанавливает WndProc в качестве оконной процедуры
procedure SetnyWndProc(handle : hwnd);
begin
if IsWindow(handle) then
NextWindowProc := Pointer(setWindowLong(handle, GWL_WNDPROC, Integer(@WndProc)));
end.
Тебе только нужно узнать handle своего окна. Да, это естественно работает только если окно существует в том же процессе.
__________________
...сказал, и загрустил от бесспорной своей правоты
|