스크롤 뷰는 수직/수평 스크롤 막대를 뷰 윈도우에 적용하여 한 화면에 표시할 수 없는 큰 이미지나 정보를 보여줄 때 사용함.
다음은 간단한 예제다. 뷰 클래스의 기본 클래스를 CScrollView로 변경한다. 이 예제는 폭과 넓이가 1600 * 1200인 비트맵 이미지를 뷰윈도우에 뿌리는데, 윈도우 크기가 이보다 작으면 스로크롤이 가능하도록 하는 예제다.
void CImageScrollView::OnInitialUpdate()
{
CScrollView::OnInitialUpdate();
CSize sizeTotal;
// TODO: 이 뷰의 전체 크기를 계산합니다.
sizeTotal.cx = 1600;
sizeTotal.cy = 1200;
SetScrollSizes(MM_TEXT, sizeTotal); //스크롤의 최대 범위를 설정한다. 1) 뷰 윈도우의 매핑 모드, 2) 최대 범위
// 이미지뷰어를 개발할 때는 출력할 이미지의 폭과 높이를 알아내어 그에 맞는 값으로 sizeTotal.cx,cy 값을 변경해야한다.
}
void CImageScrollView::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: 여기에 메시지 처리기 코드를 추가합니다.
// 그리기 메시지에 대해서는 CScrollView::OnPaint()을(를) 호출하지 마십시오.
int nVertScroll = GetScrollPos(SB_VERT);
int nHorzScroll = GetScrollPos(SB_HORZ);
CImage Image;
Image.LoadFromResource(AfxGetInstanceHandle(), IDB_Image);
Image.BitBlt(dc.m_hDC, -nHorzScroll, -nVertScroll);
}
'Windows > MFC' 카테고리의 다른 글
SDI 템플릿 (0) | 2011.11.19 |
---|---|
더블 버퍼링 (0) | 2011.11.19 |
MDI 를 닮은 SDI (0) | 2011.11.19 |
다중 뷰 - 동적 분할 윈도우와 정적 분할 윈도우 (0) | 2011.11.19 |
Modal, Modeless 대화상자, 공용 대화상자 (0) | 2011.11.19 |