![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
простой вопрос по 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;