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

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

Создание окна при помощи WinAp [D5, Win95/98]


solo ©   (2002-01-18 01:45:00) 

Люди подскажите: попробовал писать в дельфи на чистом WinApi. Сделал так: Создал новый проект => Удалил форму => Написал в файле проекта код создающий главную форму. Размер приложения зашкалил за 280кБ. Как этого избежать?


solo   (2002-01-18 14:13:00) [1]

Народ, конечно я отключил VCL(я понимаю что они вес дают), из модулей у меня подключено только Windows и Messages. Но вот какая фишка: вчера до 3-х ночи бился, чуть голову не сломал - 284кБ. Сегодня откомпилировал тот же код - 16,5кБ. Ну правда я с утра Windows переустановил :-D .


Almaz   (2002-01-18 02:49:00) [2]

Примера ради, нижеследующий код будучи скомпилированным в D5 дает исполняемый файл размером 17 кбайт.

program WinAPI;

uses Windows, Messages;

function WndProc(hWnd: HWnd; uMsg: Integer; wParam: WParam; lParam: LPARAM): Integer; stdcall;
begin
case uMsg of
WM_CLOSE:
begin
PostQuitMessage(0);
Result := 0;
end else
Result := DefWindowProc(hWnd, uMsg, wParam, lParam);
end;
end;

var
WndClass : TWndClass;
Msg: TMsg;
Wnd: HWND;
begin
FillChar(WndClass, SizeOf(WndClass), 0);
with WndClass do
begin
style := CS_VREDRAW or CS_HREDRAW;
lpfnWndProc := @WndProc;
hCursor := LoadCursor(0, IDC_ARROW);
hbrBackground := GetStockObject(WHITE_BRUSH);
lpszClassName := "MySimpleClass";
hInstance := SysInit.HInstance;
end;
if RegisterClass(WndClass) <> 0 then
begin
Wnd := CreateWindow("MySimpleClass", "My window",
WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, 0, 0, hInstance, nil);
if Wnd <> 0 then
begin
ShowWindow(Wnd, SW_SHOWNORMAL);
while GetMessage(Msg, 0, 0, 0) do
begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
end;
end;
end.


Удачи.


Almaz   (2002-01-18 02:25:00) [3]

Из usesмодуль Forms удалить не забыли ?

Удачи.


Наверх

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