다음을 통해 공유


개체 특성 검색, 새 개체 선택

애플리케이션은 GetCurrentObject 및 GetObject 함수를 호출하여 펜, 브러시, 팔레트, 글꼴 또는 비트맵의 특성을 검색 수 있습니다. GetCurrentObject 함수는 현재 DC에 선택된 개체를 식별하는 핸들을 반환합니다. GetObject 함수는 개체의 특성을 설명하는 구조를 반환합니다.

다음 예제에서는 애플리케이션이 현재 브러시 특성을 검색하고 검색된 데이터를 사용하여 새 브러시를 선택해야 하는지 여부를 확인하는 방법을 보여 주는 예제입니다.

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

참고

애플리케이션은 SelectObject 함수를 처음 호출할 때 원래 브러시 핸들을 저장했습니다. 이 핸들은 새 브러시로 마지막 그리기 작업이 완료된 후 원래 브러시를 DC로 다시 선택할 수 있도록 저장됩니다. 원래 브러시를 DC로 다시 선택하면 새 브러시가 삭제되어 GDI 힙의 메모리가 해제됩니다.