powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Назначить на OnClick функцию из DLL
5 сообщений из 5, страница 1 из 1
Назначить на OnClick функцию из DLL
    #32276506
Eugenie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi All!

CBuilder 5.
Я делаю что-то вроде плагина.
Программа опрашивает каталог, по наличию в нем определенных DLL создает новые пункты меню, на клик которых надо повесить обработчик, который тоже, естественно, хранится в DLL.
Делаю так.

HINSTANCE hDll;
hDll=LoadLibrary("my.dll");
if(hDll)
{
void __fastcall (*IsFunc)(TObject *Sender)=NULL;
(FARPROC)IsFunc=GetProcAddress(hDll,"_myfunc");
nItem->OnClick=IsFunc(MF); // и вот тут компиллятор выдает not an allowed type.!!!!!
}

Как мне изменить код, чтобы он заработал?
Или это в принципе нереально?

Thanks in advance
Eugenie
...
Рейтинг: 0 / 0
Назначить на OnClick функцию из DLL
    #32276885
1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько я понимаю
....
nItem->OnClick= IsFunc(MF ); //- это вызов функции. Попробуй так:
...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
HINSTANCE hDll; 
void __fastcall (*IsFunc)(TObject *Sender)=NULL;
hDll=LoadLibrary( "my.dll" ); 
if(hDll) 
{
       (FARPROC)IsFunc=GetProcAddress(hDll, "_myfunc" ); 
       nItem->OnClick=IsFunc;
} 


К сожелению CBuilder нет. Не могу проверить.......
...
Рейтинг: 0 / 0
Назначить на OnClick функцию из DLL
    #32277722
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
могу сразу сказать, что то что тебе предложили не заработает. OnClick ожидает процедуру класса, которая характеризуется 2 указателями, а даешь ты ей только один.
по-мойму, самое простое это написать обработчик нажатия кнопки, в котором вызвать функцию dll
...
Рейтинг: 0 / 0
Назначить на OnClick функцию из DLL
    #32286283
Фотография moonmike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно попробовать так:
HINSTANCE hDll;
hDll=LoadLibrary("my.dll");
if(hDll)
{
void __fastcall (*IsFunc)(TObject *Sender)=NULL;
(FARPROC)IsFunc=GetProcAddress(hDll,"_myfunc");
TMethod Mth;
Mth.Data = IsFuc;
Mth.Code = hDll;
nItem->OnClick= *(TNotifyEvent*)&Mth;
}
-----------------------------
Хотя я бы делал( и делаю) иначе.
Для всех пунктов меню один обработчик. в обработчике загрузка dll и вызов функции из этой dll.Есессно функция должна присутствовать во всех dll.
...
Рейтинг: 0 / 0
Назначить на OnClick функцию из DLL
    #32286287
Фотография moonmike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибся, надо конечно:
Mth.Data = hDll;
Mth.Code = IsFunc;
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Назначить на OnClick функцию из DLL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]