As data is a Pointer it would point outside the struct and won't be sent.
You'd have to send the image itself as data.
But I really don't know how you difference if you get an image or something else, as the native system doesn't seem to support event-IDs.
For sending and recieving strings you'd have to implement a bunch of chars in your struct, like in the example in the manual.
typedef struct MYDATA {
int x;
char c[20];
} MYDATA;
edit:// As I recall, BMAP is ALSO just a struct with pointers.