Basics of Scrolling - Quick Reference

Introduction

Tutorial for using a CScrollView

Description

	This code helps you to load a bitmap from a resource or from a file and 
show it in a MDI View.It enables scrolling and also scrolls the bitmap accordingly.

Implementation

Step 1

	Create a MDI Application by selecting MULTIPLE DOCUMENTS in Step 1 
	of the appwizard process.

Step 2

	In the 6th step, select the View class and in the combobox called BASE CLASS,
	select CScrollView and then click FINISH.

Step 3

	Create the following variables in the View class (yourview.h file)

       	CDC m_MemDC;
	CBitmap m_bmpView;
	int m_nBmpWidth,m_nBmpHeight;

Step 4

	In the View class , select the OnInitialUpdate function and change the code like this.

	void CMDIView::OnInitialUpdate() 
	{
		CDC *pDC = this->GetDC();

		m_MemDC.CreateCompatibleDC(pDC);

		m_bmpView.LoadBitmap(IDB_BMP_BKGND); // IDB_BMP_BKGND is a bitmap in the resource
		// Note : You can also load a bitmap from a file in the hard disk instead of using
		// the bmp in the resource.

		m_MemDC.SelectObject(&m_bmpView);

		BITMAP Bitmap;
		m_bmpView.GetBitmap(&Bitmap);

		m_nBmpHeight = Bitmap.bmHeight;
		m_nBmpWidth = Bitmap.bmWidth;

		CSize size(m_nBmpWidth,m_nBmpHeight);
		SetScrollSizes(MM_TEXT,size);

		this->ReleaseDC(pDC);	
	}

Step 5

	Select the OnDraw function and change the code inside like this.
	
	void CMDIView::OnDraw(CDC* pDC)
	{
		pDC->BitBlt(0,0,m_nBmpWidth,m_nBmpHeight,&m_MemDC,0,0,SRCCOPY);

		SetScrollSizes(MM_TEXT, CSize(m_nBmpWidth,m_nBmpHeight));
		CChildFrame *pParentFrame = (CChildFrame *)this->GetParentFrame();
		pParentFrame->RecalcLayout();
		ResizeParentToFit();	
	}

Step 6

	To prevent flickering of the bitmap when its being scrolled, override the View's
	OnEraseBkgnd and the ChildFrame's OnEraseBkgnd like this.
	
	BOOL CMDIView::OnEraseBkgnd(CDC* pDC) 
	{
		return TRUE;
	}	

	BOOL CChildFrame::OnEraseBkgnd(CDC* pDC) 
	{
		return FALSE;
	}

Step 7

	Compile your project and run it. 

Conclusion

Thats it. Now, you have a scrolling window Which displays a bitmap too
All Luck.
Hosted by www.Geocities.ws

tutorials /
scrolling
home /
Hosted by www.Geocities.ws

1