我在程序中写上这段后,跟踪到最后发现siH的nMin为0,nMax为10,而siV的nMin为0,nMax为1999,这是多么诡异的问题,谁能告诉我,怎么回事?
         SetScrollSizes(MM_TEXT,CSize(2000,2000));
SCROLLINFO siH,siV;
siH.cbSize = sizeof(siH);
siH.fMask = SIF_RANGE;
siV.cbSize = sizeof(siV);
siV.fMask = SIF_RANGE; //SIF_ALL;

::GetScrollInfo(this->m_hWnd,SB_HORZ,&siH);
::GetScrollInfo(this->m_hWnd,SB_VERT,&siV);

解决方案 »

  1.   

    我知道了,ScrollSizes确实不应该等于滚动条的尺寸。例如:你窗口尺寸是100x200,而你视图尺寸是300x500,那么滚动条需要滚动的范围实际是200x300,而不是100x200或者300x500。
      

  2.   

    问题还不是这样,假如我的窗口客户区的大小是1000X700,而我显示的图像只有500X500,这时如果我设置
    SetScrollSizes(MM_TEXT,CSize(500,500));然后我再去获取并查看滚动的范围,发现,无论水平还是垂直,都是0到10
      

  3.   

    原来我在OnSize里又设置了滚动的范围信息,所以,难怪我获得的大小总是0到10,把OnSize中的去掉,搞定