Hello all,
I am tinkering around with my wxWindows wrapper, and I've gotten myself
a bit stumped. A lot of the wxw classes rely on inheritance and virtual
functions to delegate implementation details. For instance, wxApp has a
virtual called OnInit() that is called to setup the application.
Catching the virtual call and passing it up to C# isn't terribly
difficult: I just store a delegate and call it. But what happens if C#
needs to call the base class implementation? Does that make sense? Maybe
I should include some code just in case.
If I wrap wxApp something like this:
class _App : public wxApp
{
virtual bool OnInit()
{
// Call the OnInit delegate (assume I set it previously)
return OnInitDelegate();
}
}
And in C#, the delegate calls a function like this:
class App
{
IntPtr wxAppPtr; // A C pointer to the underlying wxApp instance
public virtual bool OnInit()
{
if (!base.OnInit())
return false;
// Set up my application
}
}
How do I get "base.OnInit()" to call wxApp::OnInit()? The obvious, but
wrong, solution would be to have base:OnInit() call an unmanaged C
function like this:
bool _App_OnInit(wxApp* theApp)
{
return theApp->OnInit();
}
But that will just end up in the _App::OnInit() virtual function again.
I think this is the last issue I need to resolve; I am hoping that
someone else has solved it before me.
Thanks!
Jason
379
_______________________________________________
Mono-list maillist - [EMAIL PROTECTED]
http://lists.ximian.com/mailman/listinfo/mono-list