![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
создание окна [D5, Win2k]
ef2000 © (2002-08-14 13:31:00)Подскажите пожалуйста, как создать окно средствами win api? Если не затруднит, приведите код.. Сам пробовал:
var
Window: hWnd;
begin
Window:=CreateWindow(AppName, "Окно", WS_OVERLAPPED, 0, 0, 150, 150, 0, 0, HInstance, NIL);
ShowWindow(Window, SW_SHOW);
...
end.
не получилось. Видимио все сложнее.
Заранее благодарен.
Raptor (2002-08-14 22:08:00) [1]Да, это делается немного сложнее. Например так:
program MinWndTemplate;
uses
windows,messages;
var
wc : TWndClassEx;
Wnd : HWND;
Msg : TMsg;
function WindowProc(wnd : HWND; Msg : Integer; WParam : WParam; LParam : Longint): Longint; stdcall;
var
x,y:DWORD;
Begin
Result := 0;
case msg of
wm_destroy:Begin
postquitmessage(0);
exit;
Result:=0;
End;
//Здесь добавляешь обработчики событий WM_*
else Result := DefWindowProc(wnd, msg, wparam, lparam);
end;//Case MSG
End;
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:="MinWnd Template";
RegisterClassEx(wc);
Wnd := CreateWindowEx(0, "MinWnd Template", "MinWnd Template",
ws_overlapped or ws_sysmenu or WS_MINIMIZEBOX or WS_MAXIMIZEBOX or WS_SIZEBOX ,100, 150, 360, 200, 0, 0,Hinstance, nil);
ShowWindow(Wnd, CmdShow);
While GetMessage(Msg, 0, 0, 0) do
begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
end.
ef2000 (2002-08-14 14:07:00) [2]смотрю "Hello, world" на vc++, думаю разберусь сам.
спасибо.
Ученик (2002-08-14 14:00:00) [3]>ef2000 (14.08.02 13:54)
Надо
ef2000 (2002-08-14 13:54:00) [4]видимо надо регистрировать класс?