WINAPI - 그래픽(GDI 오브젝트)
- 스톡 오브젝트
→ 윈도우가 미리 제공하는 GDI 오브젝트를 말한다.
→ 아주 빈번하게 사용되므로 운영체제가 부팅할 때부터 미리 만들어 놓는다. 일부러 만들지 않아도 얼마든지 사용할 수 있으며 사용하고 난 후에 필요도 없다.
→ 다음 함수로 핸들을 얻어 사용한다.
→ fnObject 인수에 사용하고자 하는 스톡 오브젝트를 지정한다.
예제 : GdiObject
LRESULT OnPaint(HWND hWnd, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
HBRUSH MyBrush, OldBrush;
hdc = BeginPaint(hWnd, &ps); // DC를 얻는다.
MyBrush = (HBRUSH)GetStockObject(GRAY_BRUSH);
OldBrush = (HBRUSH)SelectObject(hdc, MyBrush);
Rectangle(hdc, 50, 50, 300, 200); // 사각형을 그린다.
SelectObject(hdc, OldBrush);
EndPaint(hWnd, &ps); // 그리기 종료
return 0;
}
LRESULT OnDestroy(HWND hwnd, WPARAM wParam, LPARAM lParam)
{
PostQuitMessage(0);
return 0;
}
→ 브러시 핸들을 저장할 변수 두개를 선언하는데 MyBrush는 그리기에 사용할 브러시 핸들이고 OldBrush는 원래의 브러시를 잠시 저장하기 위한 용도로 사용한다.
→ GetStockObject 함수로 회색의 브러시(GRAY_BRUSH) 핸들을 얻되 MyBrush 변수에 대입하기 위해 (HBRUSH)형으로 캐스팅했다.
→ GetStockObject 함수는 여러 종류의 스톡 오브젝트를 리턴하므로 대입하기 전에 원하는 타입으로 캐스팅해야 한다.
→ 구현 브러시를 사용하기 위해 GDI 오브젝트를 DC에 선택하는데 이 때는 다음 함수를 사용한다.
→ 첫 번째 인수로 DC의 핸들을 주고 두 번째 인수로 GDI 오브젝트의 핸들을 주면 DC에 해당 오브젝트를 선택한다.
→ 이후부터 GDI는 그래픽을 출력할 때 선택된 오브젝트를 사용한다. SelectObject가 리턴한ㄴ 값은 새로 선택되는 오브젝트 이전에 선택되어 있던 같은 종류의 오브젝트 핸들이다.
실습
→ 겹쳐지는 두개의 사각형을 생성하고 한쪽은 GRAY_BRUSH, 한쪽은 NULL_BRUSH 사용
→ 출력 결과
'내장형 하드웨어 > WINAPI' 카테고리의 다른 글
WINAPI - 그리기 모드 (0) | 2011.09.09 |
---|---|
WINAPI - 그래픽(색상) (0) | 2011.09.08 |
WINAPI - WM_COMMAND (0) | 2011.09.06 |
WINAPI - 리소스(메뉴 생성 첫번째) (0) | 2011.09.05 |
WINAPI - 소스분석 첫번째 (0) | 2011.08.22 |