TODAY : / TOTAL :

120626_API :: TranslateObject

  • Share this:
반응형

 LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
 HDC hdc;
 PAINTSTRUCT ps;
 int i;
 HBRUSH MyBrush,OldBrush;
 HPEN MyPen, OldPen;

 switch (iMessage) {
 case WM_PAINT:
  hdc=BeginPaint(hWnd, &ps);
  for (i=0;i<250;i+=5) {
   MoveToEx(hdc,0,i,NULL);
   LineTo(hdc,600,i);
  }

  // 빨간 펜 초록 브러시
  MyBrush=CreateSolidBrush(RGB(0,255,0)); 
  OldBrush=(HBRUSH)SelectObject(hdc,MyBrush);
  MyPen=CreatePen(PS_SOLID, 5, RGB(255,0,0));
  OldPen=(HPEN)SelectObject(hdc, MyPen);
  Ellipse(hdc,20,20,150,150);

  // 빨간 펜 널 브러시
  SelectObject(hdc,GetStockObject(NULL_BRUSH));
  Ellipse(hdc,220,20,350,150);

  // 널 펜 초록 브러시
  SelectObject(hdc,MyBrush);
  SelectObject(hdc,GetStockObject(NULL_PEN));
  Ellipse(hdc,420,20,550,150);



  DeleteObject(SelectObject(hdc, OldBrush)); // MyBrush 설정값이 리턴되어 삭제 함.

  //DeleteObject(SelectObject(hdc, OldPen)); // (X) - 한빛미디어 예제 코드에서는 다음과 같이 나와있으나,  SelectObject(hdc, OldPen)); 에서 리턴 되는 값은 NULL_PEN 이다. NULL_PEN은 stockObject 이므로 삭제 X.
  SelectObject(hdc, OldPen);                       // (0) <- 다음 코드 처럼 변경해야 함.

  DeleteObject(hdc, MyPen);                       // ** MyPen 도 생성한 함수이므로 삭제
  EndPaint(hWnd, &ps); 
  return 0;

 case WM_DESTROY:
  PostQuitMessage(0);
  return 0;
 }
 return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}





반응형

SEARCH

태그로 찾아보기