반응형
STOCK OBJECT
//스톡 브러시 예제 LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; HBRUSH MyBrush,OldBrush; switch (iMessage) { case WM_PAINT: hdc=BeginPaint(hWnd,&ps); MyBrush=(HBRUSH)GetStockObject(GRAY_BRUSH); // 기본적으로 제공되는 스톡오브젝트(브러쉬,펜,폰트) 제공. // 그중에서 브러쉬만 지정해서 가져오므로 HBRUSH 로 캐스팅. OldBrush=(HBRUSH)SelectObject(hdc,MyBrush); // DC 에 도구를 장착 하는 함수. // 마찬가지, 사용하는 도구가 브러쉬로 지정돼 있으므로 HBRUSH로 캐스팅 함. // ** 최초 DC 는 기본적으로 사용중인 오브젝트가 있음(화이트 브러쉬) // (SelectObject 는 이 전에 사용중이였던 오브젝트를 리턴해 줌.) // 기본 오브젝트를 Oldbrush 에다가 저장 해 둠. Rectangle(hdc,50,50,300,200); SelectObject(hdc,OldBrush); // ** 기본 오브젝트(화이트 브러쉬)를 다시 장착 시켜줌. // GRAY_BRUSH 는 사용 후 다시 쓸일이 없으므로 따로 저장해두지 않음. EndPaint(hWnd,&ps); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; } return(DefWindowProc(hWnd,iMessage,wParam,lParam)); } |
PEN OBJECT
//펜 오브젝트 LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; HPEN MyPen, OldPen; switch (iMessage) { case WM_PAINT: hdc=BeginPaint(hWnd,&ps); MyPen = CreatePen(PS_SOLID, 5, RGB(0,0,255)); // StockObj 로 만든게 아닌 사용자가 생성한 오브젝트 사용. //CreatePen(PS_SOLID= 실선 , 두께, 색상); OldPen = (HPEN)SelectObject(hdc, MyPen); // MyPen을 장착하고 OldPen 에 기존에 저장된 기본오브젝트(검정색 선 펜) 저장. Rectangle(hdc,50,50,300,200); SelectObject(hdc, OldPen); // OldPen 을 다시 장착해줌. DeleteObject(MyPen); // MyPen EndPaint(hWnd,&ps); // StockObj는 OS 에서 기본적으로 제공하는 것이기때문에 삭제하지않았지만, // Create 를 통해 생성시에는 반드시 삭제를 해줘야 한다. return 0; case WM_DESTROY: PostQuitMessage(0); return 0; } return(DefWindowProc(hWnd,iMessage,wParam,lParam)); } |
반응형