-
В программе главная форма создаётся автоматически, что бы её убрать используется Form.Hide. Имеет ли смысл переделать программу так, что бы когда нужно форма создавалась, а когда она не нужна - уничтожалась? Сэкономит ли это системные ресурсы?
-
При уничтожении главной формы завершится приложение. Не заметил, что скрытая форма "кушает" ресурсы.
-
>При уничтожении главной формы завершится приложение. Нет, я имел ввиду динамическое создание формы в dpr файле, что бы приложение работало в фоне, и при необходимости форма создавалась\уничтожалась, примерно так:
program Project1;
uses Windows, Messages, kol;
var Form1:pControl; B1:pControl;
Procedure cl( Sender: PObj ) ;
begin
beep(500,500);
end;
var Wc: TWndClassEx;
Msg: TMsg;
function WndProc( wnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM ): lResult; stdcall;
begin
if Msg = WM_DESTROY
then
begin
PostQuitMessage( 0 );
Result:= 0;
end
else
Result:= DefWindowProc(wnd, Msg, wParam, lParam);
end;
begin
Form1:=NewForm(Applet, 'Form1');
Form1.Height:=100;
Form1.Width:=100;
B1:=NewButton(Form1,'b1');
B1.Top:=20;
B1.Left:=20;
B1.OnClick:=TOnEvent(MakeMethod( nil, @Cl ) );
Form1.caption:='fff';
Run(Form1);
with Wc do
begin
Style:= CS_VREDRAW or CS_HREDRAW;
hIcon:= LoadIcon( 0, IDI_APPLICATION );
hIconSm:= LoadIcon( 0, IDI_APPLICATION );
hCursor:= LoadCursor( 0, IDC_ARROW );
hInstance:= hInstance;
cbSize:= SizeOf( WndClassEx );
cbClsExtra:= 0;
cbWndExtra:= 0;
hbrBackground:= HBRUSH( COLOR_BACKGROUND );
lpszMenuName:= nil;
lpfnWndProc:= @WndProc;
end;
While GetMessage( Msg, 0, 0, 0 )
do
begin
TranslateMessage( Msg );
DispatchMessage( Msg );
end;
Halt( Msg.wParam );
end. >Не заметил, что скрытая форма "кушает" ресурсы. Хотелось бы знать цифры.
-
> <> (19.04.08 21:30) [2]
А где тут динамическое создание формы?
-
>А где тут динамическое создание формы? Вот здесь:
begin
Form1:=NewForm(Applet, 'Form1');
Form1.Height:=100;
Form1.Width:=100;
B1:=NewButton(Form1,'b1');
B1.Top:=20;
B1.Left:=20;
B1.OnClick:=TOnEvent(MakeMethod( nil, @Cl ) );
Form1.caption:='fff';
Run(Form1);
-
Позвольте поинтересоваться, с каких "позиций" Вас интересует потребление ресурсов, как я понял из поста системных? У Вас какой компьютер (конфигурация), и в чем основная проблема?
-
>Позвольте поинтересоваться, с каких "позиций" Вас интересует потребление ресурсов, как я понял из поста системных? У Вас какой компьютер (конфигурация), и в чем основная проблема?
Конфигурация - D-800/128MB RAM/20GB HDD.
Меня это интересует пока теоретически, но если разница в потреблении ресурсов будет велика-то и практически.
-
Форму имеет смысл уничтожать только в случае, если её первичная настройка при показе, в начале диалога, настолько запутанная, что проще её пересоздать, чем учесть все хвосты от предыдущего состояния. Такое бывает, если внешний вид формы зависит от операции/функции, для которой она вызвана, а функций этих не меньше десятка (или хотя бы 5). В плане потребления ресурсов - это бессмысленно, если у вас не более 1000 разных форм. Не работающий код просто ляжет на своп, ограничения по ресурсам user/kernel/gdi (окна, дескрипторы таймеров, картинок и т.п.) в NT практически отсутствуют, в довольно широких пределах.
-
Спасибо!
|