Condividi tramite


Recuperare gli attributi dell'oggetto, selezionare nuovi oggetti

Un'applicazione può recuperare gli attributi per una penna, un pennello, una tavolozza, un carattere o una bitmap chiamando le funzioni GetCurrentObject e GetObject . La funzione GetCurrentObject restituisce un handle che identifica l'oggetto attualmente selezionato nel controller di dominio; la funzione GetObject restituisce una struttura che descrive gli attributi dell'oggetto.

Nell'esempio seguente viene illustrato come un'applicazione può recuperare gli attributi del pennello correnti e usare i dati recuperati per determinare se è necessario selezionare un nuovo pennello.

    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

L'applicazione ha salvato l'handle del pennello originale quando si chiama la funzione SelectObject la prima volta. Questo handle viene salvato in modo che il pennello originale possa essere selezionato nuovamente nel controller di dominio dopo che l'ultima operazione di disegno è stata completata con il nuovo pennello. Dopo aver selezionato il pennello originale nel controller di dominio, il nuovo pennello viene eliminato, liberando memoria nell'heap GDI.