Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Почему не отлавливаються двойные клики?


demon ©   (2008-08-22 02:43:00) 

вот код

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.


Юрий Зотов   (2008-08-22 06:46:00) [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 оконная функция возвращает мусор - а не доолжна. На предупреждения компилятора стоит обращать внимание.


Наверх

Титульная страница Поиск, карта сайта Написать письмо