
09.09.2007, 19:57
|
 |
Активный
|
|
Регистрация: 05.12.2006
Адрес: где-то там...
Сообщения: 321
Репутация: 35
|
|
babekcom@yandx.ru
Лучше будет создать на WIN32 API - Вот это будет настоящим минимальным окном. Окна создаваемые в VCL - огромны. Пустая форма с кнопкой достигает аж 300 КБ. Вот пример создания окна на WIN API.
Код:
program WIN32APIWIN;
uses
Windows, Messages;
const
AppName = 'WIN API WINDOW';
function WindowProc(Window: HWnd; AMessage, WParam,
LParam: Longint): Longint; stdcall;
begin
WindowProc := 0;
case AMessage of
wm_Destroy:
begin
PostQuitMessage(0);
Exit;
end;
end;
WindowProc := DefWindowProc(Window, AMessage, WParam, LParam);
end;
{ Register the Window Class:cool: }
function WinRegister: Boolean;
var
WindowClass: TWndClass;
begin
With WindowClass do
begin
Style := cs_hRedraw or cs_vRedraw;
lpfnWndProc := @WindowProc;
cbClsExtra := 0;
cbWndExtra := 0;
hInstance := HInstance;
hIcon := LoadIcon(0, idi_Application);
hCursor := LoadCursor(0, idc_Arrow);
hbrBackground := HBrush(Color_Window);
lpszMenuName := nil;
lpszClassName := AppName;
end;
Result := RegisterClass(WindowClass) <> 0;
end;
{ Create the Window Class }
function WinCreate: HWnd;
var
hWindow: HWnd;
begin
hWindow := CreateWindow(AppName, 'Object Pascal Window',
ws_OverlappedWindow, cw_UseDefault, cw_UseDefault,
cw_UseDefault, cw_UseDefault, 0, 0, HInstance, nil);
if hWindow <> 0 then
begin
ShowWindow(hWindow, CmdShow);
UpdateWindow(hWindow);
end;
Result := hWindow;
end;
var
AMessage: TMsg;
hWindow: HWnd;
begin
if not WinRegister then
begin
MessageBox(0, 'Register failed', nil, mb_Ok);
Exit;
end;
hWindow := WinCreate;
if hWindow = 0 then
begin
MessageBox(0, 'WinCreate failed', nil, mb_Ok);
Exit;
end;
while GetMessage(AMessage, 0, 0, 0) do
begin
TranslateMessage(AMessage);
DispatchMessage(AMessage);
end;
Halt(AMessage.wParam);
end.
Надеюсь ты оставишь для меня отзыв.
|