출처 : http://blog.naver.com/ccwii?Redirect=Log&logNo=90013295624
/* 스크롤 뷰에 이미지파일을 올리고 스크롤 하는 예제
/*************************************************************************************/
1. 뷰의 OnInitialUpdate에서
BITMAP bmpInfo;
m_Bitmap.m_hObject = (HGDIOBJ)LoadImage( NULL, "Image.bmp", IMAGE_BITMAP, 0, 0,
LR_LOADFROMFILE | LR_CREATEDIBSECTION | LR_DEFAULTSIZE );
m_Bitmap.GetBitmap( &bmpInfo );
m_nBmpHeight = bmpInfo.bmHeight;
m_nBmpWidth = bmpInfo.bmWidth;
SetScrollSizes(MM_TEXT, CSize( m_nBmpWidth, m_nBmpHeight) );
CClientDC dc(this);
m_hMemDC.CreateCompatibleDC( &dc );
m_hBackDC.CreateCompatibleDC( &dc );
m_BackBitmap.CreateCompatibleBitmap( &dc, m_nBmpWidth, m_nBmpHeight );
m_pOldBackBitmap = (CBitmap *)m_hBackDC.SelectObject( &m_BackBitmap );
m_pOldBitmap = (CBitmap *)m_hMemDC.SelectObject( &m_Bitmap );
2. 뷰의 OnDraw에서
CRect rt;
m_ScrollPos = GetScrollPosition();
GetClientRect( &rt );
m_hBackDC.BitBlt( 0, 0, rt.Width(), rt.Height(), &m_hMemDC, m_ScrollPos.x, m_ScrollPos.y, SRCCOPY );
pDC->BitBlt( m_ScrollPos.x, m_ScrollPos.y, rt.Width(), rt.Height(), &m_hBackDC, 0, 0, SRCCOPY );
3. 뷰의 OnDestroy에서
m_hBackDC.SelectObject( &m_pOldBackBitmap );
'프로그래밍 > VC++' 카테고리의 다른 글
Free C/C++ 라이브러리 (0) | 2007.04.23 |
---|---|
이미지프로세싱 관련 라이브러리들 (0) | 2007.04.23 |
Dialog에 ScrollView 상속받아 만든 클래스 붙이기 (0) | 2007.04.21 |
ATL로 이벤트발생시키고 MFC에서 받기 (0) | 2007.04.11 |
MFC OCX에 strmbasd.lib를 넣으면 error LNK2001: "class CFactoryTemplate * g_Templates 에러나는 경우 해결 (0) | 2007.03.27 |