글수 69
화면에 글자 좀 출력하는 중이었습니다.
그런데 아시다시피 글꼴 좀 바꾸려면 여간 귀찮지 않습니까?
그것 말고도 비트맵을 출력할 때도 SelectObject로 새 비트맵 골라준 다음 반환값 저장했다가 이전 비트맵 다시 선택해주고...
전 그냥 이런 식으로 하는게 정석인 줄 알았는데...
기특한 API가 2개 있더군요.
[code]
int SaveDC(
HDC hdc // handle to DC
);
BOOL RestoreDC(
HDC hdc, // handle to DC
int nSavedDC // restore state
);
[/code]
SaveDC는 현재 DC의 여러 상태들을 DC 스택이란 곳에 저장한다더군요.
RestoreDC는 당연히 그 반대겠죠?
두 번째 인자는 MSDN을 보시는게 더 좋겠지만, 제가 허접한 실력으로 대충 내용을 적으면
양수인 경우 => SaveDC가 뱉었던 값, SaveDC 할 때 상태로 되돌림
음수인 경우 => 상대적인 상태로 되돌림. 즉 -1 이면 가장 최근에 SaveDC 했던 때로 되돌림
그래서 이렇게 쓰면 되더랍니다.
SelectObect 할 때 이전 핸들을 보관했다가 복구하지 않아도 되는게 제일 편합니다.
[code]
SaveDC(hDC);
// 여기서 DC의 속성을 마음껏 조물딱
// 특히 SelectObject는 반환값 내던져도 됨
RestoreDC(hDC, -1);
[/code]
그런데 아시다시피 글꼴 좀 바꾸려면 여간 귀찮지 않습니까?
그것 말고도 비트맵을 출력할 때도 SelectObject로 새 비트맵 골라준 다음 반환값 저장했다가 이전 비트맵 다시 선택해주고...
전 그냥 이런 식으로 하는게 정석인 줄 알았는데...
기특한 API가 2개 있더군요.
[code]
int SaveDC(
HDC hdc // handle to DC
);
BOOL RestoreDC(
HDC hdc, // handle to DC
int nSavedDC // restore state
);
[/code]
SaveDC는 현재 DC의 여러 상태들을 DC 스택이란 곳에 저장한다더군요.
RestoreDC는 당연히 그 반대겠죠?
두 번째 인자는 MSDN을 보시는게 더 좋겠지만, 제가 허접한 실력으로 대충 내용을 적으면
양수인 경우 => SaveDC가 뱉었던 값, SaveDC 할 때 상태로 되돌림
음수인 경우 => 상대적인 상태로 되돌림. 즉 -1 이면 가장 최근에 SaveDC 했던 때로 되돌림
그래서 이렇게 쓰면 되더랍니다.
SelectObect 할 때 이전 핸들을 보관했다가 복구하지 않아도 되는게 제일 편합니다.
[code]
SaveDC(hDC);
// 여기서 DC의 속성을 마음껏 조물딱
// 특히 SelectObject는 반환값 내던져도 됨
RestoreDC(hDC, -1);
[/code]

아직 DC를 제대로 써보질 못했습니다만 상당히 유용하겠군요.