Помощь c non-Static CallBack

Здравствуйте.

Подробно:
Используем С++ (Win 10)

Имеется класс работы с Dongle. После переопределения функции и её описания в классе
Class A{
    typedef void (A::*CallbackFun)(HANDLE, int);
    void   _OnDongleCallback( HANDLE hGrd,            // Handle to Guardant protected container
                           int nGrdNotifyMessage
                         )  // Dongle notification message. See GrdNotifyMessage_XXX definition
    {
        return;
    }
    bool RegisterCallback(){
       CallbackFun _CallbackFun = &A::_OnDongleCallback;
        //_grdHandle - ключ корректный
       _grdResult = ::GrdRegisterDongleNotification(_grdHandle, reinterpret_cast<GrdDongleNotifyCallBack*>(&_CallbackFun) );
        //_grdResult - Ошибок нет
    }
}

Код отрабатывается хорошо. Но при изъятии ключа - происходит Exception!

Есть ли пример использования не СТАТИЧНОЙ CallBack функции класса при регистрации в GrdRegisterDongleNotification(...)?

Заранее благодарен...

Re: Помощь c non-Static CallBack

Добрый день. У нас таких примеров нет (Рекомендации по работе с примерами). Но похожие примеры можно найти в открытых источниках, например, здесь.

Re: Помощь c non-Static CallBack

Здравствуйте.

Спасибо за оперативный ответ!

Принято!

С уважением...

Re: Помощь c non-Static CallBack

Коллеги, может кому-то пригодится!

Вопрос решили по нестатической функции класса!

std::function<void(HANDLE, int)> _callback_prot;
extern "C" void _wrapper(HANDLE h, int v)
{
   _callback_prot(h, v);
}
Class A{
    // Dongle Notification CallBack routine
     virtual void OnDongleCallback(    HANDLE hGrd,
                            int nGrdNotifyMessage
                        ) 
    {
        return;
    }
    bool RegisterCallback(void){
       _callback_prot = std::bind(&A::OnDongleCallback, this, _1, _2);
    grdResult = ::GrdRegisterDongleNotification(grdHandle, _wrapper);
    }
};

Всё работает!

Предлагаю включить в примеры работы на С++!

С уважением,
aurusoft@mail.ru

Re: Помощь c non-Static CallBack

aurusoft пишет:

Коллеги, может кому-то пригодится!

Вопрос решили по нестатической функции класса!

std::function<void(HANDLE, int)> _callback_prot;
extern "C" void _wrapper(HANDLE h, int v)
{
   _callback_prot(h, v);
}
Class A{
    // Dongle Notification CallBack routine
     virtual void OnDongleCallback(    HANDLE hGrd,
                            int nGrdNotifyMessage
                        ) 
    {
        return;
    }
    bool RegisterCallback(void){
       _callback_prot = std::bind(&A::OnDongleCallback, this, _1, _2);
    grdResult = ::GrdRegisterDongleNotification(grdHandle, _wrapper);
    }
};

Всё работает!

Предлагаю включить в примеры работы на С++!

С уважением,
aurusoft@mail.ru

Благодарим за обратную связь!