visual c++中滚动视图的使用
visual c++中滚动视图的使用
滚动视图(CScrollView)也是经常使用的视图之一,顾名思义,滚动视图就是具有滚动条的视图,如图1所示。

图1 滚动视图
如果图像过大,在视图中无法完全显示,这时,读者就需要考虑使用滚动视图。滚动视图在普通视图(CView)的基础上,增加了成员函数SetScrollSizes(),这个成员函数可以指定视图的长与宽。
void CMyView::OnInitialUpdate()
{
CScrollView::OnInitialUpdate();
CSize sizeTotal;
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1); //载入图像
BITMAP bmpstr;
bmp.GetBitmap(&bmpstr); //取得图像结构
sizeTotal.cx=bmpstr.bmWidth; //图像的宽度
sizeTotal.cy=bmpstr.bmHeight; //图像的高度
SetScrollSizes(MM_TEXT, sizeTotal); //设置视图的范围
bmp.DeleteObject();
}
通过这段代码,视图就与所载入的图片同样大了,下面是显示图像的关键代码:
void CMyView::OnDraw(CDC* pDC)
{
CDC memDC;
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1);
BITMAP bmpstr;
bmp.GetBitmap(&bmpstr);
memDC.CreateCompatibleDC(pDC); //建立一临时场景
memDC.SelectObject(&bmp); //装载图像
//拷贝到设备场景中
pDC->BitBlt(0,0,bmpstr.bmWidth,bmpstr.bmHeight,&memDC,0,0,SRCCOPY);
memDC.DeleteDC();
bmp.DeleteObject();
}