cursor.h

Clase wxCursor

Un cursor es un pequeño mapa de bits que suele utilizarse para indicar dónde se encuentra el puntero del ratón, con una imagen que puede indicar la interpretación de un clic del ratón.

Jerarquía:

Jerarquía de la clase wxCursor

Al igual que con los iconos, los cursores en X y MS Windows se crean de manera diferente. Por lo tanto, se crearán cursores separados para los diferentes entornos. Los métodos específicos de la plataforma para crear un objeto wxCursor están previstos, y esta es una ocasión en la que probablemente se requerirá compilación condicional (ver wxIcon para un ejemplo).

Un único objeto cursor puede ser utilizado en muchas ventanas (cualquier tipo de subventana). La convención de wxWidgets es establecer el cursor para una ventana, como en X, en lugar de establecerlo globalmente como en MS Windows, aunque una función global wxSetCursor() también está disponible para su uso en MS Windows.

Creación de un cursor personalizado

El siguiente es un ejemplo de creación de un cursor a partir de datos de mapa de bits de 32x32 (down_bits) y una máscara (down_mask) donde 1 es negro y 0 es blanco para los bits, y 1 es opaco y 0 es transparente para la máscara. Funciona en Windows y GTK+.

static char down_bits[] = { 255, 255, 255, 255, 31,
    255, 255, 255, 31, 255, 255, 255, 31, 255, 255, 255,
    31, 255, 255, 255, 31, 255, 255, 255, 31, 255, 255,
    255, 31, 255, 255, 255, 31, 255, 255, 255, 25, 243,
    255, 255, 19, 249, 255, 255, 7, 252, 255, 255, 15, 254,
    255, 255, 31, 255, 255, 255, 191, 255, 255, 255, 255,
    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
    255 };
 
static char down_mask[] = { 240, 1, 0, 0, 240, 1,
    0, 0, 240, 1, 0, 0, 240, 1, 0, 0, 240, 1, 0, 0, 240, 1,
    0, 0, 240, 1, 0, 0, 240, 1, 0, 0, 255, 31, 0, 0, 255,
    31, 0, 0, 254, 15, 0, 0, 252, 7, 0, 0, 248, 3, 0, 0,
    240, 1, 0, 0, 224, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0 };
 
#ifdef __WXMSW__
    wxBitmap down_bitmap(down_bits, 32, 32);
    wxBitmap down_mask_bitmap(down_mask, 32, 32);
 
    down_bitmap.SetMask(new wxMask(down_mask_bitmap));
    wxImage down_image = down_bitmap.ConvertToImage();
    down_image.SetOption(wxIMAGE_OPTION_CUR_HOTSPOT_X, 6);
    down_image.SetOption(wxIMAGE_OPTION_CUR_HOTSPOT_Y, 14);
    wxCursor down_cursor = wxCursor(down_image);
#elif defined(__WXGTK__) or defined(__WXMOTIF__)
    wxCursor down_cursor = wxCursor(down_bits, 32, 32, 6, 14,
                                    down_mask, wxWHITE, wxBLACK);
#endif

Objetos y punteros predefinidos

wxCROSS_CURSOR()

wxCursor* wxCROSS_CURSOR

Cursor en forma de cruz.

wxHOURGLASS_CURSOR()

wxCursor* wxHOURGLASS_CURSOR

Cursor de reloj. Indica que el programa está ocupado.

wxNullCursor()

wxCursor wxNullCursor

Cursor nulo.

wxSTANDARD_CURSOR()

wxCursor* wxSTANDARD_CURSOR

Cursor estándar, normalmente la flecha.

Funciones miembro

wxCursor()

wxCursor::wxCursor()

Constructor por defecto.

wxCursor()

wxCursor::wxCursor( const char bits[], int width, int height, int hotSpotX = -1, int hotSpotY = -1, const char maskBits[] = NULL )

Construye un cursor pasando una matriz de bits (datos XBM).

Los parámetros fg y bg solo tienen efecto en GTK+, y fuerzan al cursor a utilizar determinados colores de fondo y primer plano.

Si hotSpotX o hotSpotY es -1, el hotspot será el centro de la imagen del cursor (solo en Motif).

Parámetros
bits
Matriz de bits de datos XBM.
width
Anchura del cursor.
height
Altura del cursor.
hotSpotX
Coordenada x de la zona activa (relativa a la parte superior izquierda de la imagen).
hotSpotY
Coordenada y del punto caliente (relativa a la parte superior izquierda de la imagen).
maskBits
Bits para un mapa de bits de máscara.

Disponibilidad: solo disponible para los ports wxGTK, wxMotif.

Nota:: En wxPerl usa Wx::Cursor->newData(bits, width, height, hotSpotX = -1, hotSpotY = -1, maskBits = 0).

wxCursor()

wxCursor::wxCursor( const wxString & cursorName, wxBitmapType type = wxCURSOR_DEFAULT_TYPE, int hotSpotX = 0, int hotSpotY = 0 )

Construye un cursor pasando un nombre de recurso de cadena o un nombre de archivo.

Los argumentos hotSpotX y hotSpotY solo se utilizan cuando no hay información sobre puntos calientes en el recurso/archivo de imagen que se va a cargar (por ejemplo, cuando se utiliza wxBITMAP_TYPE_ICO en wxMSW o wxBITMAP_TYPE_XPM en wxGTK).

Parámetros
cursorName
El nombre del recurso o del archivo de imagen a cargar.
type
Tipo de icono a cargar. Por defecto es wxCURSOR_DEFAULT_TYPE, que es una #define asociada a diferentes valores en diferentes plataformas:
  • bajo Windows, por defecto es wxBITMAP_TYPE_CUR_RESOURCE. Otros tipos permitidos en Windows son wxBITMAP_TYPE_CUR (para cargar un cursor desde un archivo de cursor .cur), wxBITMAP_TYPE_ICO (para cargar un cursor desde un archivo de icono .ico) y wxBITMAP_TYPE_ANI (para cargar un cursor desde un archivo de icono .ani).
  • En MacOS, por defecto es wxBITMAP_TYPE_MACCURSOR_RESOURCE; cuando se especifica un nombre de recurso de cadena, primero se escanean los cursores de color 'crsr' y luego los cursores en blanco/negro 'CURS' de la cadena de recursos. hay que tener en cuenta que las bifurcaciones de recursos están obsoletas en macOS, por lo que esto solo está disponible por razones de legado y no debe utilizarse en código nuevo.
  • Bajo GTK, por defecto es wxBITMAP_TYPE_XPM. Ver el ctor wxCursor(const wxImage& image) para más información.
  • en X11, por defecto es wxBITMAP_TYPE_XPM.
  • En Motif, por defecto es wxBITMAP_TYPE_XBM.
hotSpotX
Coordenada x de la zona activa (relativa a la parte superior izquierda de la imagen).
hotSpotY
Coordenada y de la zona activa (relativa a la parte superior izquierda de la imagen).
wxCursor()

wxCursor::wxCursor(wxStockCursor cursorId)

Construye un cursor utilizando un identificador de cursor.

Parámetros
cursorId
Un identificador de cursor de stock. Ver wxStockCursor.
wxCursor()

wxCursor::wxCursor(const wxImage & image)

Construye un cursor a partir de una wxImage.

Si el cursor es monocromo en la plataforma actual, los colores con los elementos RGB todos mayores que 127 estarán en primer plano, los colores menores que este fondo. La máscara (si existe) se utilizará para especificar el área transparente.

En wxMSW el primer plano será blanco y el fondo negro. Si el cursor es mayor de 32x32 se redimensiona.

En wxGTK se soportan cursores de color y canal alfa (a partir de GTK+ 2.2). En caso contrario, se utilizarán los dos colores más frecuentes para el primer plano y el fondo. En cualquier caso, el cursor se mostrará al tamaño de la imagen.

Bajo wxMac (Cocoa), se soportan cursores grandes.

Hay que tener en cuenta que la imagen puede definir el punto caliente del cursor. Para establecerlo se necesita usar wxImage::SetOption() con wxIMAGE_OPTION_CUR_HOTSPOT_X o wxIMAGE_OPTION_CUR_HOTSPOT_Y, p.e.

image.SetOption(wxIMAGE_OPTION_CUR_HOTSPOT_X, hotSpotX);
image.SetOption(wxIMAGE_OPTION_CUR_HOTSPOT_X, hotSpotY);
wxCursor()

wxCursor::wxCursor(const char *const * xpmData)

Construye un cursor a partir de datos XPM.

En las versiones de wxWidgets hasta la 3.1.6 la construcción de wxCursor a partir de datos XPM utilizaba implícitamente el constructor wxImage a partir de datos XPM y el constructor wxCursor a partir de wxImage. Desde 3.1.6 esta sobrecarga del constructor está disponible para permitir que la construcción de wxCursor desde XPM siga funcionando, aunque el constructor wxImage desde XPM sea ahora explícito.

wxCursor()

wxCursor::wxCursor(const wxCursor & cursor)

Constructor de copia, utiliza el conteo de referencias.

Parámetros
cursor
Puntero o referencia a un cursor a copiar.
~wxCursor()

virtual wxCursor::~wxCursor()

Destruye el cursor.

Ver destrucción de objetos contados por referencia para más información.

Un cursor puede ser reutilizado para más de una ventana, y no se destruye cuando se destruye la ventana. wxWidgets destruye todos los cursores al salir de la aplicación, aunque es mejor limpiarlos explícitamente.

GetHotSpot()

wxPoint wxCursor::GetHotSpot() const

Devuelve las coordenadas del punto caliente del cursor.

El punto caliente es el punto en el que se considera que se encuentra el ratón cuando se utiliza este cursor.

Este método actualmente solo está implementado en wxMSW y wxGTK2+ y simplemente devuelve wxDefaultPosition en los otros ports.

IsOk()

virtual bool wxCursor::IsOk() const

Devuelve true si los datos del cursor están presentes.

Operadores

operator=()

wxCursor& wxCursor::operator=(const wxCursor & cursor)

Operador de asignación, utilizando el cómputo de referencias.

Métodos y datos heredados

Esta clase hereda los métodos y datos miembro públicos y protegidos de wxObject y wxGDIObject.