![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как сделать OnTimer в RunTime в DLL? [D7, WinXP]
tytus © (2007-03-15 11:46:00)var
Timer:TTimer;
OnTimer:TNotifyEvent;
function.....
Timer:=TTimer.Create(????);
Timer.Enambled:=false;
Timer.Interval:=30000;
Timer1.Enabled:=true;
Сергей М. (2007-03-15 15:59:00) [1]
> tytus © (15.03.07 15:58) [14]
> Напишу cdecl и все.
Валяй.
далеко пойдешь)
tytus (2007-03-15 15:58:00) [2]>Сергей М. © (15.03.07 15:48) [13]
да не нужен мне Application в dll. Напишу cdeclи все.
Всем спасибо!
See ya! -)
Сергей М. (2007-03-15 15:48:00) [3]
> tytus © (15.03.07 15:40) [12]
И что ?
И у этой "проги на С" есть и дельфийский объект Application и хэндл основного окна ?
Репу-то почеши малясь) ..
tytus (2007-03-15 15:40:00) [4]>Сергей М. © (15.03.07 15:20) [10]
stdcall упомянут осознанно или "щоб було" ?
ни, цэ нэ так, моя dll выклыкатыметься прогою на С. -)))
Leonid Troyanovsky (2007-03-15 15:25:00) [5]
> tytus © (15.03.07 15:09) [9]
> Вы имеете ввиду передавать в dll Application.Handle?
Я имел ввиду, что у хоста может и не быть Application.
> Или передача хендла хост-приложения оправдана только для
> форм в dll?
Там она не оправдана.
Или, лучше сказать, что не оправданы формы в dll.
--
Regards, LVT.
Сергей М. (2007-03-15 15:20:00) [6]
> tytus © (15.03.07 15:09) [9]
stdcall упомянут осознанно или "щоб було" ?
tytus (2007-03-15 15:09:00) [7]>Leonid Troyanovsky © (15.03.07 14:14) [8]
Вы имеете ввиду передавать в dll Application.Handle?
К примеру так:
SomeFunction(AHandle:THndle;....):integer;stdcall;
А в самой dll писать:
SomeFunction(.....):integer;
begin
Application.Handle:=AHandle;
SomeClass:=TSomeClass.Create(Application);
...
end;
Или передача хендла хост-приложения оправдана только для форм в dll?
На счет SetTimer - спасибо. Юзал, думаю проблем не будет.
Leonid Troyanovsky (2007-03-15 14:14:00) [8]
> tytus © (15.03.07 12:26) [6]
> может так
Не нужно использовать TTimer в dll.
Есть такая функция SetTimer, ее и пользуй with TimerProc.
Ну, а для начала, библиотека должна найти какое-нибудь
окно хост-приложения (принадлежащее вызывающему потоку).
--
Regards, LVT.
Сергей М. (2007-03-15 12:42:00) [9]Класс любой нужен.
А у класса этого метод с прототипом TNotifyEvent
tytus (2007-03-15 12:26:00) [10]может так
var
procedure OnTimer(Sender:TObject) of object;
begin
...
Timer.OnTimer:=OnTimer;
tytus (2007-03-15 12:17:00) [11]var
Timer:TTimer;
OnTimer:TNotifyEvent;
begin
Timer:=TTimer.Create(nil);
Timer.OnTimer:=OnTimer;
Timer.Enabled:=true;
end;
как описать процедуру
procedure Timer.OnTimer(Sender:TObject);
Сергей М. (2007-03-15 12:13:00) [12]
> tytus © (15.03.07 12:08) [3]
Ну и причем тут DLL ?
Если у тебя, предположим, не DLL, а приложение без форм, то в этом случае ты знаешь как это сделать ?
tytus (2007-03-15 12:08:00) [13]>Сергей М. © (15.03.07 11:58) [1]
непонятно как подрутить событие срабатывания таймера к самому таймеру.
Рамиль (2007-03-15 12:07:00) [14]nil
Сергей М. (2007-03-15 11:58:00) [15]А что не понятно ?