您的位置:首页 > 其它

MFC窗口滚动功能 CScrollView类

2014-12-05 15:28 274 查看
在利用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))

}

这是时运行程序就可以看到窗口多了两个滚动条哦
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: