void Draw3dRect(HDC hdc, int x, int y, int xx, int yy, BOOL down, int width)
{
COLORREF clrMain = RGB(255,192,192),
clrLight = RGB(0,0,0),
clrDark = RGB(128,128,128);
HPEN hPen1,hPen2,hOldPen;
HBRUSH hBrush,hOldBrush;
if(down)
{
hPen2 = CreatePen(PS_SOLID,1,clrLight);
hPen1 = CreatePen(PS_SOLID,1,clrDark);
}
else
{
hPen1 = CreatePen(PS_SOLID,1,clrLight);
hPen2 = CreatePen(PS_SOLID,1,clrDark);
}
hBrush = CreateSolidBrush(clrMain);
hOldPen = (HPEN)SelectObject(hdc,hPen1);
hOldBrush = (HBRUSH)SelectObject(hdc,hBrush);
Rectangle(hdc,x,y,xx+1,yy+1);
for(int i=0;i<width;i++)
{
SelectObject(hdc,hPen1);
MoveToEx(hdc,xx-1,y,0);
LineTo(hdc,xx,yy);
LineTo(hdc,xx,y);
x++;y++;xx--;yy--;
}
SelectObject(hdc,hOldPen);
SelectObject(hdc,hOldBrush);
DeleteObject(hPen1);
DeleteObject(hPen2);
DeleteObject(hBrush);
}
사각형을 그리는 그래픽 소스입니다.
질문하고 싶은 부분은 굵게 처리한 소스 부분인데요
hOldPen에 어떤 값이 대입되게 되는 건가요??
전체적인 흐름이 이해가 잘 안갑니다.
SelectObject로 PEN을 선택을 하면 현재 사용 중인 PEN 핸들을 반환함
그림을 그리는 니가 있는데, 이때 니 손에는 이미 기본펜을 쥐고있다임.. 이 기본펜을 다른데 저장하고 펜바꾸면서 쓰다가 메모리 누수를 막기위해 기본펜을 다시 손에 쥔 다음 프로그램 또는 함수 종료