Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.08.09;
Скачать: CL | DM;

Вниз

Форма из DLL в отдельном потоке   Найти похожие ветки 

 
al3xey   (2009-06-12 23:07) [0]

Доброго времени суток!
Мне нужно написать DLL с формой.
В длл 4 функции.
Start,SendData,GetData,Finish.
Использоваться должно так:
Программа загружает DLL и вызывает Start. Далее в цикле она выполняет SendData и GetData.
SendData шлет постоянно изменяющиеся данные в DLL (на форме они отображаются). А GetData считывает данные из длл (функция возвращает число DOUBLE), которые зависят от того, какие галочки на форме в данный момент поставлены.
Finish закрывает форму и очищает память. Вроде всё ясно и просто.

Но как мне реализовать это, как вынести рисование формы и обработку её сообщений в отдельный поток?

Заранее спасибо!


 
al3xey   (2009-06-12 23:23) [1]

По-сути мне нужно сделать немодальную форму...


 
Amoeba ©   (2009-06-13 00:26) [2]


> Доброго времени суток!
> Мне нужно написать DLL с формой.
>

А нафига? Проблем не хватает?


 
Германн ©   (2009-06-13 00:48) [3]


> al3xey   (12.06.09 23:23) [1]
>
> По-сути мне нужно сделать немодальную форму...

По сути тебе нужно сделать DLL без форм. Что, кстати более чем естественно для dll. Ибо перечисленные тобой 4 функции не нуждаются в форме.


 
al3xey   (2009-06-13 00:57) [4]

спасибо за очень содержательные ответы! особенно Amoeba =)))

> Ибо перечисленные тобой 4 функции не нуждаются в форме.

Да?

> GetData считывает данные из длл (функция возвращает число
> DOUBLE), которые зависят от того, какие галочки на форме
> в данный момент поставлены.

А это как тогда реализовать?
Я пишу DLL для сторонней программы, еслиб у меня были её исходники, никаких DLL я б не придумывал


 
Германн ©   (2009-06-13 01:08) [5]


> al3xey   (13.06.09 00:57) [4]
>
> спасибо за очень содержательные ответы! особенно Amoeba
> =)))
>
> > Ибо перечисленные тобой 4 функции не нуждаются в форме.
>
>
> Да?
>
> > GetData считывает данные из длл (функция возвращает число
> > DOUBLE), которые зависят от того, какие галочки на форме
> > в данный момент поставлены.
>
> А это как тогда реализовать?
> Я пишу DLL для сторонней программы, еслиб у меня были её
> исходники, никаких DLL я б не придумывал
>

1. Да. Не нуждаются.
2. GetData вполне может считывать данные, учитывая "галочки " в форме/окне самой программы.

P.S. Если ты пишешь "DLL для сторонней программы", то твои возможности явным образом ограничены тем, что тебе предоставляет та самая сторонняя. И уж тогда вопросы к её авторам, а уж никак не к нам.


 
Юрий Зотов ©   (2009-06-14 22:09) [6]

DLL:

library Project2;

uses
 Forms,
 Unit2 in "Unit2.pas" {Form2}; // В Unit2 - самая обычная форма

var
 Form: TForm2;

procedure Start;
begin
 if Form = nil then
   Application.CreateForm(TForm2, Form);
 Form.Show
end;

procedure Finish;
begin
 Form.Free;
 Form := nil
end;

{$R *.res}

exports
 Start,
 Finish;

begin

end.<
/CODE>
Тестовый проект:

type
 TProc = procedure;
var
 HLib: THandle;
 Start, Finish: TProc;

procedure TForm1.FormCreate(Sender: TObject);
begin
 HLib := LoadLibrary("Project2.dll");
 Start := GetProcAddress(HLib, "Start");
 Finish := GetProcAddress(HLib, "Finish")
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 FreeLibrary(HLib)
end;

procedure TForm1.btnStartClick(Sender: TObject);
begin
 Start
end;

procedure TForm1.btnFinishClick(Sender: TObject);
begin
 Finish
end;



Страницы: 1 вся ветка

Текущий архив: 2009.08.09;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
2-1244709711
a.a.j.
2009-06-11 12:41
2009.08.09
Место позиции курсора в поле html страницы


2-1244727308
pest
2009-06-11 17:35
2009.08.09
Вставить из буфера в cxShellListView


15-1244406604
Юрий
2009-06-08 00:30
2009.08.09
С днем рождения ! 8 июня 2009 понедельник


3-1225536846
Ega23
2008-11-01 13:54
2009.08.09
Список имён Системных DNS в ODBC


15-1244539317
Тимохов_
2009-06-09 13:21
2009.08.09
Как проверить есть ли доступ по TCP порту на компьютер