Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > обработка сообщения WM_MOUSEWHEEL


Автор: welt 18.4.2008, 00:50
создаю окно на winapi.
хочу обработать событие движения колесика мыши.
Пишу код.

Код


var MM:tagMSG;
.................

function WindowProc(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): longint; stdcall; //îáðàáîò÷èê ñîîáùåíèé
begin
  Result := DefWindowProc(hwnd, msg, wparam, lparam);
case Msg of
 WM_MOUSEWHEEL:
  begin
    if lParam>0 then
    MessageBox(0,'Вверх', '/|\',MB_OK)   else
 
    MessageBox(0,'Вниз', '\|/',MB_OK)   ;

  end;
....................



Работает неверно. где-то ошибка значит. Буду рад, если подскажете.

Автор: volvo877 18.4.2008, 01:19
Может, лучше так:

Код
function WndMessageProc(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): UINT; stdcall;
begin
  Result := 0;
  case Msg of

    WM_MOUSEWHEEL:
    begin
      if lParam>0 then MessageBox(0,'Вверх', '/|\',MB_OK)
      else MessageBox(0,'Вниз', '\|/',MB_OK);
    end;

    ...

  else
    // Только здесь вызываешь обработчик по умолчанию, а не в самом начале
    Result := DefWindowProc(hwnd, msg, wparam, lparam);

  end;
?

Хотя вешать MessageBox-ы на прокрутку - как-то не очень...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)