Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.16;
Скачать: CL | DM;

Вниз

простой вопрос по API   Найти похожие ветки 

 
Anton S.   (2005-09-02 22:13) [0]

Как используя API-функции поместить на форму какой-нибудь элемент управления, например кнопку. Прошу, если можно, пример кода.


 
Турист   (2005-09-02 22:20) [1]


procedure TForm1.Button1Click(Sender: TObject);
begin
 CreateWindow("BUTTON", "Кнопка", WS_CHILD or WS_VISIBLE or BS_PUSHLIKE,
              50, 50, 75, 25, Handle, 0, HInstance, nil)
end;


 
Eraser ©   (2005-09-03 00:08) [2]

Anton S.   (02.09.05 22:13)

Если уже есть форма, зачем для помещения на неё кнопки нужно использовать именно API ф-ии?


 
Fay ©   (2005-09-03 03:05) [3]

2 Anton S.   (02.09.05 22:13)
Зри в "генофонд"


 
Anton S.   (2005-09-04 00:52) [4]

2 Eraser
Форма тоже создана на "чистом" win-API, а вообще просто хочу научиться работать с API.


 
Германн ©   (2005-09-04 01:23) [5]

2 Anton S.   (04.09.05 00:52) [4]

>2 Eraser
>Форма тоже создана на "чистом" win-API, а вообще просто хочу >научиться работать с API.

"Чмстый" WinApi ничего не знает о "формах"! Для него есть только "Окна". Он также не знает, что такое "элемент управления"! А "например кнопка" для него тоже такое же окно, но обрабатывающее сообщения так, как это нужно кнопке.


 
_RusLAN ©   (2005-09-05 18:41) [6]

:))
http://delphimaster.net/view/2-1125684802/


 
Marser ©   (2005-09-06 01:15) [7]

Вот, я как-то пробовал. В данном случае происходит ещё и обработка нажатия на кнопку с помощью wm_command.
program APIprob;

uses
 windows, messages;
var
 wc: TWndClassEx;
 MainWnd,ButWND : HWND;
 Mesg : TMsg;
procedure oncommand(wparam,lparam:longint);
var wmn:word;
   wnd:hwnd;
begin
 wmn:=wparam shr 16;
 wnd:=hwnd(lparam);
 if (wnd=butwnd)and(wmn=bn_clicked) then
   messagebox(0,"dfdf","dfd",mb_ok);
end;
function WindowProc(wnd:HWND; Msg : Integer; Wparam:Wparam; Lparam:Lparam):Lresult; stdcall;
Begin
 case msg of
 wm_destroy :
   Begin
     postquitmessage(0);exit;
     Result:=0
   End;
 wm_command:oncommand(wparam,lparam)

  else Result:=DefWindowProc(wnd,msg,wparam,lparam);
 end;
End;
procedure createwin;
var
 xPos,yPos,nWidth,nHeight : Integer;
begin
 wc.cbSize:=sizeof(wc);
 wc.style:=cs_hredraw or cs_vredraw;
 wc.lpfnWndProc:=@WindowProc;
 wc.cbClsExtra:=0;
 wc.cbWndExtra:=0;
 wc.hInstance:=HInstance;
 wc.hIcon:=LoadIcon(0,idi_application);
 wc.hCursor:=LoadCursor(0,idc_arrow);
 wc.hbrBackground:=COLOR_BTNFACE+1;
 wc.lpszMenuName:=nil;
 wc.lpszClassName:="WinMin : Main";
 RegisterClassEx(wc);
 xPos:=100;
 yPos:=150;
 nWidth:=400;
 nHeight:=250;
 MainWnd:=CreateWindowEx (0,"WinMin : Main","Win Min",
                          ws_overlappedwindow,xPos,yPos,
                          nWidth,nHeight,0,0,Hinstance,nil);
 ShowWindow(MainWnd,CmdShow);
end;
procedure createbutton;
begin
 ButWnd:=CreateWindowEx (0,"BUTTON","Button",
                         WS_CHILD,5,5,
                          60,30,MainWND,0,Hinstance,nil);
 ShowWindow(ButWnd,SW_SHOWNORMAL);
end;
begin
 createwin;
 createbutton;
 while GetMessage(Mesg,0,0,0) do begin
   TranslateMessage(Mesg);
   DispatchMessage(Mesg);
 end;
end.



Страницы: 1 вся ветка

Текущий архив: 2005.10.16;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.042 c
1-1127585884
Hamster
2005-09-24 22:18
2005.10.16
Исправление значения ячейки в StringGrid


2-1127098868
Федор
2005-09-19 07:01
2005.10.16
MDAC


2-1126486092
Viktop
2005-09-12 04:48
2005.10.16
Создание тестов


11-1108260935
Lars
2005-02-13 05:15
2005.10.16
Current Listbox Selection


14-1127580199
Иван Шихалев
2005-09-24 20:43
2005.10.16
Дейкстра и Вирт в электронном виде