Clase wxCustomDataObject
wxCustomDataObject es una especialización de wxDataObjectSimple para algunos datos específicos de la aplicación en arbitraria (ya sea personalizado o uno de los estándar).
Jerarquía:

La única restricción es que se supone que estos datos se pueden copiar bit a bit (es decir, con memcpy()), por lo que sería una mala idea hacer que contenga un objeto C++ (aunque C struct está bien).
Por defecto, wxCustomDataObject almacena los datos en un buffer. Para poner los datos en el buffer se puede usar SetData() o TakeData() dependiendo de si se quiere que el objeto haga una copia de los datos o no.
Esta clase puede usarse tal cual, pero si no se quiere almacenar los datos dentro del objeto sino proporcionarlos bajo demanda, se debería anular GetSize(), GetData() y SetData() (o puede que solo las dos primeras o solo la última si solo se permite leer/escribir los datos).
Funciones miembro
wxCustomDataObject()
wxCustomDataObject::wxCustomDataObject(const wxDataFormat & format = wxFormatInvalid)
El constructor acepta un argumento de formato que especifica el (único) formato soportado por este objeto.
Si no se establece aquí, debe utilizarse wxDataObjectSimple::SetFormat().
~wxCustomDataObject()
virtual wxCustomDataObject::~wxCustomDataObject()
El destructor liberará los datos contenidos en el objeto.
Obsérvese que aunque llama a la función virtual Free(), siempre se llamará a la versión de la clase base (C++ no permite llamar a funciones virtuales desde constructores o destructores), así que si se anula Free(), se debería anular también el destructor en la clase (que probablemente solo llamaría a la versión de Free() de la clase derivada).
Alloc()
virtual void* wxCustomDataObject::Alloc(size_t size)
Esta función es llamada para asignar bytes de tamaño de memoria desde SetData().
La versión por defecto solo utiliza el operador new.
Free()
virtual void wxCustomDataObject::Free()
Esta función es llamada cuando los datos son liberados, puede ser sobrescrita como se quiera (o puede no ser nada en absoluto).
La versión por defecto llama al operador delete[] sobre los datos.
GetData()
virtual void* wxCustomDataObject::GetData() const
Devuelve un puntero a los datos.
GetSize()
virtual size_t wxCustomDataObject::GetSize() const
Devuelve el tamaño de los datos en bytes.
SetData()
virtual bool wxCustomDataObject::SetData( size_t size, const void * data )
Establece los datos.
El objeto de datos hará una copia interna.
Reimplementado de wxDataObjectSimple.
TakeData()
void wxCustomDataObject::TakeData( size_t size, void * data )
Como SetData(), pero no copia los datos, sino que el objeto toma posesión del puntero.
Métodos y datos heredados
Esta clase hereda los métodos y datos miembro públicos y protegidos de wxDataObject y wxDataObjectSimple.