Форум: "Начинающим";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];
Внизпростой вопрос по 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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.076 c