TODAY : / TOTAL :

120626_API :: GDI

  • Share this:
반응형

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


반응형

SEARCH

태그로 찾아보기