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

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

простой вопрос по API


Anton S. ©   (2005-09-02 22:13:00) 

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


Marser   (2005-09-06 01:15:00) [1]

Вот, я как-то пробовал. В данном случае происходит ещё и обработка нажатия на кнопку с помощью 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.


_RusLAN   (2005-09-05 18:41:00) [2]

:))
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1125684802&n=18


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

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

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

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


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

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


Fay   (2005-09-03 03:05:00) [5]

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


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

Anton S.   (02.09.05 22:13)

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


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


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;


Наверх

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