본문 바로가기

Win32 API

14. Win32 API - StockObject

StockObject

자원 중에서 내용이나 속성이 바뀌지 않으면서 주로 사용되는 자원들이 많은데 응용프로그램의 요청시마다 운영체제가 자원을 구성해서 전달하는것은 비효율 적입니다.

운영체제에서 사용빈도가 높고 내용이 바뀌지 않는 자원들을 미리 만들어서
가지고 있는데 이를 Stock Object라고 정의합니다.

 

1. GetStockObject

https://learn.microsoft.com/ko-kr/windows/win32/api/wingdi/nf-wingdi-getstockobject

 

GetStockObject 함수(wingdi.h) - Win32 apps

GetStockObject 함수는 스톡 펜, 브러시, 글꼴 또는 팔레트 중 하나에 대한 핸들을 검색합니다.

learn.microsoft.com

HGDIOBJ GetStockObject(
  [in] int i
);
BLACK_BRUSH 검은색 브러시.
DKGRAY_BRUSH 진한 회색 브러시.
DC_BRUSH 단색 브러시입니다. 기본 색은 흰색입니다. SetDCBrushColor 함수를 사용하여 색을 변경할 수 있습니다. 자세한 내용은 주의 섹션을 참조하세요.
GRAY_BRUSH 회색 브러시.
HOLLOW_BRUSH 속이 빈 브러시(NULL_BRUSH 해당)
LTGRAY_BRUSH 연한 회색 브러시.
NULL_BRUSH Null 브러시(HOLLOW_BRUSH 해당)
WHITE_BRUSH 흰색 브러시.
BLACK_PEN 검은색 펜.
DC_PEN 단색 펜 색입니다. 기본 색은 검은색입니다. SetDCPenColor 함수를 사용하여 색을 변경할 수 있습니다. 자세한 내용은 주의 섹션을 참조하세요.
NULL_PEN Null 펜입니다. null 펜은 아무 것도 그리지 않습니다.
WHITE_PEN 흰색 펜.
ANSI_FIXED_FONT Windows 고정 피치(모노스페이스) 시스템 글꼴입니다.
ANSI_VAR_FONT Windows 가변 피치(비례 공간) 시스템 글꼴입니다.
DEVICE_DEFAULT_FONT 디바이스 종속 글꼴입니다.
DEFAULT_GUI_FONT 메뉴 및 대화 상자와 같은 사용자 인터페이스 개체의 기본 글꼴입니다. DEFAULT_GUI_FONT 또는 SYSTEM_FONT 사용하여 대화 상자와 창에서 사용하는 글꼴을 가져오는 것은 권장되지 않습니다. 자세한 내용은 설명 섹션을 참조하세요.기본 글꼴은 Tahoma입니다.
OEM_FIXED_FONT OEM(Original Equipment Manufacturer) 종속 고정 피치(monospace) 글꼴입니다.
SYSTEM_FONT 시스템 글꼴입니다. 기본적으로 시스템은 시스템 글꼴을 사용하여 메뉴, 대화 상자 컨트롤 및 텍스트를 그립니다. DEFAULT_GUI_FONT 또는 SYSTEM_FONT 사용하여 대화 상자와 창에서 사용하는 글꼴을 가져오는 것은 권장되지 않습니다. 자세한 내용은 설명 섹션을 참조하세요.기본 시스템 글꼴은 Tahoma입니다.
SYSTEM_FIXED_FONT 고정 피치(모노스페이스) 시스템 글꼴입니다. 이 스톡 개체는 3.0 이전의 16비트 Windows 버전과의 호환성을 위해서만 제공됩니다.
DEFAULT_PALETTE 기본 색상표입니다. 이 색상표는 시스템 팔레트의 정적 색으로 구성됩니다.

 

2. 사용 시 주의사항

GetStockObject 함수로 얻은 핸들 값은 DeleteObject나 CloseHandle을 사용해서 제거하면 안됩니다.
해당 핸들 값은 해당 프로그램을 위해 별도 생성되어 전달되는 자원이 아니라 기본적으로 운영체제가 가지고 있는 자원이라서 제거 함수 사용시 오류 발생합니다.

 

3. 사용 예시

DKGRAY 색상의 Brush Stock Object를 사용

case WM_RBUTTONDOWN:
    {
        HDC hdc = ::GetDC(hWnd);
        SelectObject(hdc, GetStockObject(DKGRAY_BRUSH));
        Rectangle(hdc, 400, 400, 500, 500);
        ::ReleaseDC(hWnd, hdc);
        return 0;
    }

 

4. 참조

https://blog.naver.com/tipsware/220988417978

 

GetStockObject 함수에 대하여

1. 운영체제와 'Stock Object' 'Stock'의 사전적 의미는 '재고품', '저장품', '주식 자본' 같은 뜻...

blog.naver.com

 

'Win32 API' 카테고리의 다른 글

16. Win32 API - Direct2D  (0) 2024.03.16
15. Win32 API - GDI+  (0) 2024.03.16
13. Win32 API - 윈도우 좌표  (0) 2024.03.09
12. Win32 API - 무효화 / 유효화 영역  (0) 2024.03.06
11. Win32 API - Bitmap  (0) 2024.03.02