dataobj.h

Clase wxDataObjectComposite

wxDataObjectComposite es la derivación más sencilla de wxDataObject que puede utilizarse para admitir varios formatos.

Jerarquía:

Jerarquía de la clase wxDataObjectComposite

Contiene varios objetos wxDataObjectSimple y admite cualquier formato soportado por al menos uno de ellos. Solo se prefiere uno de estos objetos de datos (el primero si no se cambia explícitamente utilizando el segundo parámetro de Add()) y su formato determina también el formato preferido del objeto de datos compuesto.

Consultar la documentación de wxDataObject para conocer las razones por las que se puede preferir utilizar wxDataObject directamente en lugar de wxDataObjectComposite por razones de eficiencia.

Este ejemplo muestra cómo se puede inicializar y utilizar un objeto de datos compuesto capaz de almacenar mapas de bits o nombres de archivos (presumiblemente de archivos de mapas de bits):

MyDropTarget::MyDropTarget()
{
    wxDataObjectComposite* dataobj = new wxDataObjectComposite();
    dataobj->Add(new wxBitmapDataObject(), true);
    dataobj->Add(new wxFileDataObject());
    SetDataObject(dataobj);
}
 
wxDragResult MyDropTarget::OnData(wxCoord x, wxCoord y,
                                  wxDragResult defaultDragResult)
{
    if ( !GetData() )
        return wxDragNone;
 
    wxDataObjectComposite *
        dataobjComp = static_cast<wxDataObjectComposite *>(GetDataObject());
 
    wxDataFormat format = dataobjComp->GetReceivedFormat();
    wxDataObject *dataobj = dataobjComp->GetObject(format);
    switch ( format.GetType() )
    {
        case wxDF_BITMAP:
            {
                wxBitmapDataObject *
                    dataobjBitmap = static_cast<wxBitmapDataObject *>(dataobj);
 
                ... use dataobj->GetBitmap() ...
            }
            break;
 
        case wxDF_FILENAME:
            {
                wxFileDataObject *
                    dataobjFile = static_cast<wxFileDataObject *>(dataobj);
 
                ... use dataobj->GetFilenames() ...
            }
            break;
 
        default:
            wxFAIL_MSG( "unexpected data object format" );
    }
 
    return defaultDragResult;
}

Funciones miembro

wxDataObjectComposite()

wxDataObjectComposite::wxDataObjectComposite()

Constructor por defecto.

Add()

void wxDataObjectComposite::Add( wxDataObjectSimple * dataObject, bool preferred = false )

Añade el dataObject a la lista de objetos admitidos y se convierte en el objeto preferido si preferred es true.

GetObject()

wxDataObjectSimple* wxDataObjectComposite::GetObject( const wxDataFormat & format, wxDataObject::Direction dir = wxDataObject::Get ) const

Devuelve el puntero al objeto que soporta el formato pasado para la dirección especificada.

Se devuelve NULL si el formato especificado no es compatible con esta dirección dir. El puntero devuelto es propiedad de wxDataObjectComposite y no debe ser eliminado por la persona que llama.

GetReceivedFormat()

wxDataFormat wxDataObjectComposite::GetReceivedFormat() const

Informa del formato pasado al método SetData().

Este debería ser el formato del objeto de datos dentro del compuesto que recibió los datos del portapapeles o de la operación DnD. Se puede utilizar este método para averiguar qué tipo de objeto de datos se recibió.