Compartir a través de


Recuperar atributos de objeto, seleccionar nuevos objetos

Una aplicación puede recuperar los atributos de un lápiz, pincel, paleta, fuente o mapa de bits mediante una llamada a las funciones GetCurrentObject y GetObject . La función GetCurrentObject devuelve un identificador que identifica el objeto seleccionado actualmente en el controlador de dominio; La función GetObject devuelve una estructura que describe los atributos del objeto.

En el ejemplo siguiente se muestra cómo una aplicación puede recuperar los atributos de pincel actuales y usar los datos recuperados para determinar si es necesario seleccionar un nuevo pincel.

    HDC hdc;                     // display DC handle  
    HBRUSH hbrushNew, hbrushOld; // brush handles  
    HBRUSH hbrush;               // brush handle  
    LOGBRUSH lb;                 // logical-brush structure  
 
    // Retrieve a handle identifying the current brush.  
 
    hbrush = GetCurrentObject(hdc, OBJ_BRUSH); 
 
    // Retrieve a LOGBRUSH structure that contains the  
    // current brush attributes.  
 
    GetObject(hbrush, sizeof(LOGBRUSH), &lb); 
 
    // If the current brush is not a solid-black brush,  
    // replace it with the solid-black stock brush.  
 
    if ((lb.lbStyle != BS_SOLID) 
           || (lb.lbColor != 0x000000)) 
    { 
        hbrushNew = GetStockObject(BLACK_BRUSH); 
        hbrushOld = SelectObject(hdc, hbrushNew); 
    } 
 
    // Perform painting operations with the solid-black brush.  
 
 
    // After completing the last painting operation with the new  
    // brush, the application should select the original brush back  
    // into the device context and delete the new brush.  
    // In this example, hbrushNew contains a handle to a stock object.  
    // It is not necessary (but it is not harmful) to call  
    // DeleteObject on a stock object. If hbrushNew contained a handle  
    // to a brush created by a function such as CreateBrushIndirect,  
    // it would be necessary to call DeleteObject.  
 
    SelectObject(hdc, hbrushOld); 
    DeleteObject(hbrushNew); 

Nota

La aplicación guardó el identificador de pincel original al llamar a la función SelectObject la primera vez. Este identificador se guarda para que el pincel original se pueda volver a seleccionar en el controlador de dominio después de que se haya completado la última operación de pintura con el nuevo pincel. Una vez seleccionado el pincel original en el controlador de dominio, se elimina el nuevo pincel, liberando memoria en el montón de GDI.