Конференция "WinAPI" » Почему не отлавливаються двойные клики?
 
  • demon © (22.08.08 02:43) [0]
    вот код

    program Project1;

    uses
     Windows, Messages;

    const
     WndClass = 'TWinApiWnd';
     WndCaption = 'API';

    var
     Wc: TWndClassEx;
     Wnd: HWND;
     Msg: TMsg;

    function WindowProc( Wnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM ): LRESULT; stdcall;
    begin
      case Msg of
         WM_DESTROY: begin
            PostQuitMessage( 0 );
            Result := 0;
            Exit;
         end;
         WM_LBUTTONDBLCLK: MessageBox(wnd, 'Dbl click!', 'worked', MB_OK);
         else
            Result := DefWindowProc( Wnd, Msg, wParam, lParam );
      end;
    end;

    begin

      with Wc do
      begin
         cbSize := SizeOf( Wc );
         style := CS_HREDRAW or CS_VREDRAW;
         lpfnWndProc := @WindowProc;
         cbClsExtra := 0;
         cbWndExtra := 0;
         hInstance := hInstance;
         hIcon := LoadIcon( 0, IDI_APPLICATION );
         hCursor := LoadCursor( 0, IDC_ARROW );
         hbrBackground := CreateSolidBrush($000000);
         lpszMenuName := nil;
         lpszClassName := WndClass;
      end;

      RegisterClassEx( Wc );
      Wnd := CreateWindowEx( 0, WndClass, WndCaption, WS_OVERLAPPEDWINDOW,
                             100, 100, 300, 100, 0, 0, hInstance, nil );

      ShowWindow( Wnd, SW_SHOWNORMAL );

      while GetMessage( Msg, 0, 0, 0 ) do
      begin
         TranslateMessage( Msg );
         DispatchMessage( Msg );
      end;
      Halt( Msg.wParam );
    end.
  • Юрий Зотов © (22.08.08 06:46) [1]
    with Wc do
    begin
     cbSize := SizeOf(Wc);
     style := CS_HREDRAW or CS_VREDRAW or CS_DBLCLKS;
     ...
     hInstance := hInstance; // ???!!! Что за чудесатости чудесатые?
     // Используйте GetModuleHandle(nil) или SysInit.HInstance;
     ...
    end;

    И еще: при WM_LBUTTONDBLCLK оконная функция возвращает мусор - а не доолжна. На предупреждения компилятора стоит обращать внимание.
 
Конференция "WinAPI" » Почему не отлавливаються двойные клики?
Есть новые Нет новых   [134435   +33][b:0][p:0]