Problem combining a visual basic app, c++ dll, and callback methods
Posted on 2004-09-24
The short of my question is this: How do I create a VB callback that is invoked from within a c++ dll which passes a character string from the c++ dll to the VB callback method.
Specifically, my VB app loads a dll I created in c++. This dll needs to notify the app of certain events created by the user. One of these events requires that a character message be sent from the c++ dll to the VB app.
The pointer to the callback function:
(CALLBACK* AddEntityFunc)(short index, float x, float y, short type, BSTR text);
in C++ the exported function to receive the callback method looks like this.
void __declspec(dllexport) CALLBACK AddEntityFunc(long address)
AddEntityFunc = (void (CALLBACK*)(short index, float x, float y, short type, BSTR text))address;
in vb the method to callback looks like
Public Sub AddEntityCallback(ByVal index As Integer, ByVal x As Single, ByVal y As Single, ByVal t As Integer, ByVal str As String)
frm.label = str 'Just to see if we get the correct data.
When I invoke the vb callback method I use something like:
short id = 2;
float x = 3.2;
float y = 5.39;
short type = 1;
and data is a previously filled char array of up to 50 characters.
AddEntityFunc(index, x,y,type, data);
I've tried createing an array of unsigned shorts to pass in, but it crashes the program,
I've tried casting the char array to a BSTR, but that crashes the program.
I would prefer not to use MFC as the dll has not been built with MFC.
Can anyone give me some direction on this? I am stuck.
Thanks in advance,