我们知道MFC种的Picture控件基本上就是CStatic,而CStatic控件通过ShowScrollBar函数只可以使滚动条现实出来,但是不可以拖动,所以想只用CStatic控件实现大图片的现实并带有进度条是不容易实现的,然而我们又知道CButton控件的滚动条是可以拖动的,所以我们可以只通过CButton控件来实现我们这种想法,而不用另外添加CScrollBar控件。
要想实现在CButton上实现带滚动条的图片显示控件,首先要重载CButton类,我用的重载类名字是CButtonPic,在DrawItem函数当中我们实现在CButton上画图操作即可,我做出来的效果图如下所示:
另外滚动条的实现直接调用ShowScrollBar函数来显示滚动条,通过SetScrollRange来设置最大和最小可以滚动到的位置,通过SetScrollInfo函数来设置滚动条的长度。
拖动滚动条的实现图片的区域显示,通过在OnVScroll和OnHScroll消息函数当中实现。
CButtonPic类中主要的实现代码如下:
(1) 图片显示函数:
void CButtonPic::DarwPic()
{
CDC* pDC = this->GetDC();
CRect rc;
this->GetClientRect(&rc);
CBitmap cbmp;
BITMAP bm;
cbmp.LoadBitmap(m_uiSourcePic);
cbmp.GetBitmap(&bm);
CDC dcImage;
dcImage.CreateCompatibleDC(pDC);
dcImage.SelectObject(&cbmp);
pDC->StretchBlt(0,0,rc.Width(),rc.Height(), &dcImage,m_nHorzPos ,m_nVertPos,rc.Width),rc.Height),SRCCOPY);
}
(2) 滚动条消息函数:
&