Partager via


Récupérer des attributs d’objet, sélectionner de nouveaux objets

Une application peut récupérer les attributs d’un stylet, d’un pinceau, d’une palette, d’une police ou d’une bitmap en appelant les fonctions GetCurrentObject et GetObject . La fonction GetCurrentObject retourne un handle identifiant l’objet actuellement sélectionné dans le contrôleur de domaine ; la fonction GetObject retourne une structure qui décrit les attributs de l’objet.

L’exemple suivant montre comment une application peut récupérer les attributs de pinceau actuels et utiliser les données récupérées pour déterminer s’il est nécessaire de sélectionner un nouveau pinceau.

    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); 

Notes

L’application a enregistré la poignée de pinceau d’origine lors de l’appel de la fonction SelectObject la première fois. Cette poignée est enregistrée afin que le pinceau d’origine puisse être sélectionné de nouveau dans le contrôleur de domaine une fois la dernière opération de peinture terminée avec le nouveau pinceau. Une fois le pinceau d’origine sélectionné dans le contrôleur de domaine, le nouveau pinceau est supprimé, ce qui libère de la mémoire dans le tas GDI.