Показать сообщение отдельно
  #6  
Старый 25.04.2009, 16:53
Аватар для 0nni
0nni 0nni вне форума
Начинающий
 
Регистрация: 13.12.2008
Адрес: Туапсе
Сообщения: 161
Репутация: 20
По умолчанию

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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 своего окна. Да, это естественно работает только если окно существует в том же процессе.
__________________
...сказал, и загрустил от бесспорной своей правоты
Ответить с цитированием