![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как передать popupmenu из dll в программу [D6, Win2k]
bloodman © (2004-08-05 16:49:00)Есть dll в ней динамически(впрочем это не важно) создается popupmenu. И мне его нужно передать в программу и присвоить его контролу делал так:
dll:
type
PPopupMenu : ^Tpopupmenu;
Function init: PPopupMenu;
begin
Result := @Mypopup;
end;
в программе писал так:
@ListBox1.popupmenu:=Init;
Но так не работает. Каким способом можно передать??
bloodman (2004-08-06 15:14:00) [1]До вызова функции программа не знает что создавать, поэтому даже если жто бы сработало не подходит в моей ситуации. Ж(
GuAV (2004-08-06 14:04:00) [2]а чем бы не передать в dll хендл контрола, куда popup цеплять?
bloodman (2004-08-06 13:19:00) [3]>вариант [1] сработает, если и exe и dll скомпилированы с ран тайм пакетами
К сожалению это неприемлемо.
>например, передавать handle
пробовал это read-only параметр. (TPopUpMenu, WinApi , пока не смотрел)
>или второй вариант - передавать структурой хранилище строк - caption ов меню, и параллельно хранилище callback - обработчмков нажатий. В этом случае хост должен по полученной информации из библиотеки сам строить меню
Видимо придется так :(( У мя так все контролы создаются. Думал хоть с popup можно как то полегче.
Может у кого - нибуть еще идеи есть как передать popup??? МАСТЕРА плизз помогите.
Гаврила (2004-08-05 23:38:00) [4]вариант [1] сработает, если и exe и dll скомпилированы с ран тайм пакетами
если это неприемлимо - копайся в глубинах API
например, передавать handle
или второй вариант - передавать структурой хранилище строк - caption ов меню, и параллельно хранилище callback - обработчмков нажатий. В этом случае хост должен по полученной информации из библиотеки сам строить меню
bloodman (2004-08-05 22:56:00) [5]Как обойтись? Подскажи плизз.
Гаврила (2004-08-05 21:43:00) [6]
> ДА только C начал изучать а там одни указатели везде :)
Function init: PPopupMenu;
результат этой функции -указатель на указатель
а вот Mypopup - это просто указатель
указатель на указатель - это крайне редко необходимо, в 99 процентах случаев без этого можно обойтись, и в данном случае тоже
Гаврила (2004-08-05 21:40:00) [7]
> BwRTP Это что??
Build with runtime packages
bloodman (2004-08-05 21:33:00) [8]BwRTP Это что??
bloodman (2004-08-05 21:32:00) [9]Access Violation
bloodman (2004-08-05 21:30:00) [10]GuAV © (05.08.04 19:26) [1]
ДА только C начал изучать а там одни указатели везде :)
Гаврила (2004-08-05 19:47:00) [11]Так как сказал GuAV © (05.08.04 19:26) [1]
можно только при условии BwRTP
GuAV (2004-08-05 19:26:00) [12]Почему ты так эти @ любишь? :-)
Так попробуй:
Function init: TPopupMenu;
begin
Result := Mypopup;
end;
ListBox1.popupmenu:=Init;