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


Автор: Тьма 30.1.2006, 15:44
значить я попробовало написат приложиние на апи чтоб просто сождавал форму. получилось.
попробовал реагировать на нажатие мыши. получилось.
попробовал создать кнопку. получилось smile
попробовал реагировать на нажатие кнопки мышкой. ОЙ НЕПОЛУЧИЛОСЬ. и я не могу найти баг

вот я ее создаю
Код

 ZeroMemory(@btnclass, sizeof(btnclass));
 with btnclass do
      begin
        lpfnWndProc := @ButtonProc;
        hInstance := hInstance;
        lpszClassName:= 'Button';
        style := WS_CHILD or CS_NOCLOSE or cs_hRedraw or cs_vRedraw;// or EDGE_RAISED;
        hbrBackground:= 1;
        lpszMenuName := NIL;
        cbWndExtra := 0;
        cbClsExtra := 0;
      end;
 RegisterClass(btnclass);
 Button := CreateWindow( 'BUTTON', 'test', WS_CHILD + WS_VISIBLE, 0, 0, 100, 40, handleWnd, 0,  hInstance, @ButtonProc);


а вот процедура

Код

function ButtonProc(Window: HWnd; AMessage, WParam,
LParam: Longint): Longint; stdcall;
begin
 ButtonProc:= DefWindowProc(Window, AMessage, WParam, LParam);
 case AMessage of
 WM_LBUTTONDOWN: MessageBox( 0, 'Вы нажали кнопку!', 'Информация',MB_OK or MB_ICONINFORMATION);
 end;
end;


помогите, кто может

Автор: _hunter 30.1.2006, 16:05
ты сначала сам сообщение должен обработать и только потом ( по желанию ) дать его обработать окнам. а у тебя все наоборот...
эту:
ButtonProc:= DefWindowProc(Window, AMessage, WParam, LParam);
строчку поставь после Case

Автор: Тьма 30.1.2006, 18:53
охотник, я попробовал и не получилось
меня немного смущает что в процедуре обработки событий формы у меня сначала
Код

WindowProc:= DefWindowProc(Window, AMessage, WParam, LParam);

а потом обрабатываю и все работает

и еще
btnclass.style := WS_CHILD or CS_NOCLOSE or cs_hRedraw or cs_vRedraw;
что здесь надо корректно писать?

Автор: Alexeis 31.1.2006, 16:10
В таком случае удобно посмотреть код VCl - те стили которые использует TButton.

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