MFC用CButton实现带滚动条的图片显示控件,无须用CScrollBar辅助实现。

本文介绍如何在MFC中利用CButton控件而非CStatic或CScrollBar,创建一个能显示大图片并带有可拖动滚动条的控件。通过重载CButton类,实现DrawItem函数绘制图片,OnVScroll和OnHScroll消息处理滚动,以及InitPic函数初始化设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     我们知道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) 滚动条消息函数:

 &

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值