Форум: "WinAPI";
Текущий архив: 2009.10.11;
Скачать: [xml.tar.bz2];
ВнизПочему не отлавливаються двойные клики? Найти похожие ветки
← →
demon © (2008-08-22 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.
← →
Юрий Зотов © (2008-08-22 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 оконная функция возвращает мусор - а не доолжна. На предупреждения компилятора стоит обращать внимание.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2009.10.11;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.004 c