Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Child Form из DLL

1.2K
02 ноября 2006 года
piroman17
175 / / 20.07.2006
Есть такая задача: в программе есть форма MDIForm. в DLL - ChildForm.
Как открыть ChildForm в виде дочерней формы для MDIForm?
547
02 ноября 2006 года
Hydra
488 / / 20.06.2006
Передавай в Dll указатель на MDIForm и устанавливай ChildForm->ParentWindow=MDIFrom
1.2K
02 ноября 2006 года
piroman17
175 / / 20.07.2006
[QUOTE=Hydra]
Передавай в Dll указатель на MDIForm ...
[/QUOTE]
под указателем ты имееш в виду MDIForm.Handle? :confused: (не работает).
Плиз, приложи исходник.
1.2K
02 ноября 2006 года
piroman17
175 / / 20.07.2006
Извеняюсь за тупость, всё работает. Огромное спасибо!
1.2K
02 ноября 2006 года
piroman17
175 / / 20.07.2006
Кстати, а как вызвать процедуру ноходящуюся в MDIForm из DLL'a?
547
03 ноября 2006 года
Hydra
488 / / 20.06.2006
В dll опиши:
 
Код:
typedef void __fastcall (*TMyProc)(int Pars);
  extern TMyProc Proc;

Затем напиши функцию передачи адреса функции (в dll)
 
Код:
void __fastcall SetProc(void* Addr)
{
  Proc=(TMyProc)Addr;
}

Ну а в MDI
 
Код:
SetCode((void*)имя)

Процедура скорее всего не должна быть частью класса, ибо они все __closure и вроде вызвать дать не должен. Обойти это легко - сделай обычную процедуру и из нее вызывай что надо.

P.S. Это на билдере - но идея та же. Я точно синтаксис дельфы не помню. void* это pointer.
547
03 ноября 2006 года
Hydra
488 / / 20.06.2006
В dll опиши:
 
Код:
typedef void __fastcall (*TMyProc)(int Pars);
  extern TMyProc Proc;

Затем напиши функцию передачи адреса функции (в dll)
 
Код:
void __fastcall SetProc(void* Addr)
{
  Proc=(TMyProc)Addr;
}

Ну а в MDI
 
Код:
SetCode((void*)имя)

Процедура скорее всего не должна быть частью класса, ибо они все __closure и вроде вызвать дать не должен. Обойти это легко - сделай обычную процедуру и из нее вызывай что надо.

P.S. Это на билдере - но идея та же. Я точно синтаксис дельфы не помню. void* это pointer.
387
03 ноября 2006 года
Ihbif19
421 / / 28.10.2004
[quote=Hydra]В dll опиши:
 
Код:
typedef void __fastcall (*TMyProc)(int Pars);
  extern TMyProc Proc;
void __fastcall SetProc(void* Addr)
{
  Proc=(TMyProc)Addr;
}
 
SetCode((void*)имя)

[/quote]
Напиши ему на DELPHI, а то тут C++ сплошной.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог