The problem has nothing to do with the StarBurn itself rather it's C++ programming issue
You cannot pass address of the member as getting address need to have static member. This raises another problem - all the member variables touched from static method also need to be static. This cannot always be done. So you should do something like this (little trick):
class CBurner
{
private:
...
protected:
...
public:
static long __stdcall CallbackWrapper( void *context );
virtual long Callback( void *context );
};
long
__stdcall
CBurner::CallbackWapper( void *context )
{
CBurner *burner = ( CBurner * )( contex );
return CBurner->Callback( context );
}
long
CBurner::Callback( void *context )
{
// Do whatever you want to do with the non-static members
}
Now you need to pass CallbackWrapper as the callback address. It's static so casting will not fail. From inside the static code you do cast from void* to "this" (basically) and call virtual method
Here we are
Let me know did it help or not.
Thanks!