Hi,
try this:
Test-File.bmx:Strict
Framework brl.blitz
Import brl.eventqueue 'You can see that it only needs the eventqueue module,
'the maxgui is actually not needed
Import "Test-File.c"
AddHook EmitEventHook , Func 'Add a hook to show that the events can also be
'received by using hooks
CallCStuff 'go straight into c
WaitEvent 'let's get an event from the queue
WriteStdout "Event received by queue: " + CurrentEvent.ToString ( ) + "~n"
Function Func:Object ( id , data:Object , context:Object )
WriteStdout "Event received by hooks: " + data.ToString ( ) + "~n"
Return data
EndFunction
Extern
Function CallCStuff ( )
EndExternTest-File.c:#define EVENT_GADGETACTION 0x2001
#define BBNULL &bbNullObject
extern void * bbNullObject ;
void * brl_event_CreateEvent ( int id , void * source , int data , int mods , int x , int y , void * extra ) ;
void brl_event_EmitEvent ( void * event ) ;
void CallCStuff ( )
{
brl_event_EmitEvent ( brl_event_CreateEvent ( EVENT_GADGETACTION , BBNULL , 13 , 15 , 7 , 4 , BBNULL ) ) ;
//I'm using some random numbers in the event's fields to show that there're really carried with
}(I'm not the best c-programmer, I know... but it works)
Of course you can post an event directly to the queue by calling PostEvent, however I suggest to use EmitEvent instead, which will post it to the queue as well, but also allows users using the hook-system to get these events.
If it runs successfully, it should give this output:
Building Test-File
Compiling:Test-File.c
Compiling:Test-File.bmx
flat assembler version 1.66
3 passes, 2125 bytes.
Linking:Test-File.debug.exe
Executing:Test-File.debug.exe
Event received by hooks: GadgetAction: data=13, mods=15, x=7, y=4, extra=""
Event received by queue: GadgetAction: data=13, mods=15, x=7, y=4, extra=""
Process complete
I hope I could help you.