CScrollView的使用

 

1)在VC中如何使用CScrollView类,即让视图具有滚动的功能

 

方法 一:新生成的视图类,必须继承CScrollView类,

如下所示:

class CImageProcessingView : public CScrollView

{

    ……;

}

然后在C*****View中,修改OnInitialUpdate()成员的代码,其中要进行矩形长、宽的设置,如下:

sizeTotal.cx = sizeTotal.cy = 4000;

这边要注意的是,其值不能太小,若太小了,在显示图像时,当图像的规格大小所设置的值时,便无法实现滚动的功能。

void CImageProcessingView::OnInitialUpdate()

{

    CScrollView::OnInitialUpdate();

    CImageProcessingDoc* pDoc = GetDocument();

    ASSERT_VALID(pDoc);

    CSize sizeTotal;

    // TODO: calculate the total size of this view

    sizeTotal.cx = sizeTotal.cy = 4000;

    SetScrollSizes(MM_TEXT, sizeTotal);

 

方法二:此方法中,以上面的操作大同小异。就是有关于sizeTotal的设置采取了更“自由”的方法,这主要是在面向图像方面的。应用如下:

    SetScrollSizes(MM_TEXT,GetDocument()->GetDocSize());

这里将较详细地介绍下GetDocSize()方法,它返回的是一个CSize变量。

    CSize GetDocSize() const

        { return m_sizeDoc; }//m-sizeDoc是声明在C*****Doc类的变量,GetDocSize()也是//C*****Doc类中的成员函数。

    // 提取图像的大小,设置文档大小

    m_sizeDoc = CSize((int) ::DIBWidth(lpDIB), (int) ::DIBHeight(lpDIB));

 

2) 填充CScrollview背景

 

1.void CCEditView::OnInitialUpdate()
{
 SetScrollSizes(MM_TEXT, CSize(1000, 1000));
 CScrollView::OnInitialUpdate();
}

2.在OnDraw中

void CCEditView::OnDraw(CDC* pDC)
{
 CRect rc;
 GetClientRect(&rc);
 CPoint pt = GetScrollPosition();
 rc.OffsetRect(pt);
 pDC->FillRect(&rc, &CBrush(RGB(150, 150, 150)));
 }

一般来说,在onInitialUpdate设置完成后,在OnDraw中把你绘图使用的参数传递给SetScrollSizes(),确定滚动条的范围,此处有一注意事项:在绘图的过程中使用CDC *pDC直接调用绘制,不要使用CClientDC dc(this)的dc来进行绘制,否则将导致滚动条的移动时图形没有任何变化.

 

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值