Форум: "Начинающим";
Текущий архив: 2009.08.09;
Скачать: [xml.tar.bz2];
ВнизФорма из 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c