Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1244515357
set1212
2009-06-09 06:42
2009.08.09
Несколько одинаковых форм.


15-1243996706
brother
2009-06-03 06:38
2009.08.09
сайт одноклассники хакнули?


2-1242669062
winsockuser
2009-05-18 21:51
2009.08.09
WinSock, передача файлов, клиент получает в два раза больше


15-1244392962
Stan*
2009-06-07 20:42
2009.08.09
Посоветуйте компонент для мультиязыка, для D2009


11-1204994235
Blackman
2008-03-08 19:37
2009.08.09
[KOL-CE] Есть какие-нибудь библиотеки сжатия для KOL-CE?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский