MFC窗口滚动功能 CScrollView类

在利用MFC AppWizard生成工程时,在创建向导的第六步可以吧视类的基类选择为CScrollView。这样,视图窗口就具有滚动功能,当图形在窗口中不能完全显示时,可以通过拖动滚动条来浏览整个窗口中的内容。

而当生成工程时未选择CScrollView作为基类,如果要为其增加窗口滚动的功能,可以手动讲该程序的视类的基类CView修改为CScrollView,这需要修改源程序的几处内容。在C**View类头文件中只有一处需要修改,即该类的定义出,将CView修改为CScrollView即可,让C**View类从后者派生,修改后的代码如下所示:

class C**View:public CScrollView

{

.....

但在C**View类的源文件中需要多处修改,为了避免遗漏,可以用vc自带的【Edit\Replace】菜单命令替换,也可以用visual assist 中rename功能。在替换完毕之后,程序可以成功编译和链接,但是运行时将会出现一个非法操作提示,这是因为对滚动窗口来说,在初始创建时,需要一些设置,包括整个滚动窗口的大小,以及当单击滚动条箭头时滚动条滚动的数值和单击滚动栏时滚动条滚动的数值。这时,就需要调用CScrollView类的成员函数:SetScrollSizes,该函数有四个参数,因为后两个参数都有默认值,所以在调用的时候可以只为其传递前两个参数的值。

根据前面的知识,我们可以断定应该在视类窗口创建之后再调用SetScrollSizes函数,这里可以为C**View类重载一个虚函数:OnInitialUpdate,OnInitialUpdate函数是在窗口完全创建完成之后调用的打一个函数,也就是说该函数在第一次调用OnDraw函数之前就调用。利用此特点,可以在此函数中对窗口进行一些初始化的工作,本例即设置滚动窗口初始尺寸。OnInitialUpdate函数具体代码如下

void C**View::OnInitialUpdate()

{

        CScrollView::OnInitialUpdate();

        //TODO: Add your specialized code here and/or call the base class

        SetScrollSizes(MM_TEXT,CSize(800,600))

}

这是时运行程序就可以看到窗口多了两个滚动条哦

  • 1
    点赞
  • 0
    评论
  • 6
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值