스크롤 뷰는 수직/수평 스크롤 막대를 뷰 윈도우에 적용하여 한 화면에 표시할 수 없는 큰 이미지나 정보를 보여줄 때 사용함.
다음은 간단한 예제다. 뷰 클래스의 기본 클래스를 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

+ Recent posts