Главная страница
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.011 c
11-1204664342
=BuckLr=
2008-03-04 23:59
2009.08.09
Вопрос по KOLMediaPlayer


15-1244195182
test
2009-06-05 13:46
2009.08.09
Отключить всплывающие окна об ошибках.


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


2-1243105083
AntonioPermskiy
2009-05-23 22:58
2009.08.09
TListView vsList


6-1205160643
alexm_hs
2008-03-10 17:50
2009.08.09
Как работать с MIB-файлами?