我参照侯俊杰《深入浅出MFC》(第二版)476页“可滚动的窗口:CScrollView”一节,以四个步骤修改我的程序如下:
一.定义Document的大小。我把它设为我屏幕大小的两倍。
二.将我自定义的View类的父类由CView改为CScrollView,并准备改写其虚函数     OnInitialUpdate()。
三.改写OnInitialUpdate,在其中设定滚动条范围。
四.修改鼠标坐标。
当我做完上面四个步骤后,将程序编译连接。运行后发现程序确实有了滚动条,但是当我用鼠标下拉滑块,电击箭头,或者点击滚动条,都不能使其滚动。拖拽滑块时,滑块倒是跟着鼠标移动,但是View的内容没变。当鼠标放开时,滑块立刻恢复到原来位置。
请问,这是怎么回事?!
如果你认为没有响应鼠标消息,请问如何才能响应?!
CScrollView应该已经把消息问题解决了啊!

解决方案 »

  1.   

    可能是有些CView没有替换改,我建议:
    1、先用Replace把所有的CView改为CScrollView
    2、把作为参数的CScrollView改回CView
    3.定义Document的大小。我把它设为我屏幕大小的两倍。
    4.改写其虚函数     OnInitialUpdate()。
    5.改写OnInitialUpdate,在其中设定滚动条范围。   你也可以手工把所有CView改为CScrollView,除了作为函数参数的CView类。
      

  2.   

    应该是你没有正确设置SetScrollSizes( int nMapMode, SIZE sizeTotal, const SIZE& sizePage = sizeDefault, const SIZE& sizeLine = sizeDefault );函数的参数。
    使ScrollView中的滚动条工作,在OnInitialUpdate中正确使用SetScrollSizes成员就可以了。
    自己检查一下,看参数是否设置真确,如果没问题,把OnInitialUpdate中的相关代码贴出来