我在CSrollView中添加了一个直滚动条和垂直滚动条,结果竖直滚动条和垂直滚动条在右下角重叠了。代码如下,请各位高手指点迷津。
void CTest1View::OnInitialUpdate()
{
CScrollView::OnInitialUpdate(); //设置滚动条区域
CRect rect;
GetClientRect(&rect);
int clientWidth=rect.Width();
int clientHeight=rect.Height();
SetScrollSizes(MM_TEXT, CSize(clientWidth,clientHeight));
ResizeParentToFit(); //创建水平滚动条
CScrollBar* p_scbHorizontal=new CScrollBar;
p_scbHorizontal->Create(WS_CHILD|WS_VISIBLE|SBS_HORZ|SBS_BOTTOMALIGN,rect,this,110);
//创建垂直滚动条
CScrollBar* p_scbVertical=new CScrollBar;
p_scbVertical->Create(WS_CHILD|WS_VISIBLE|SBS_VERT|SBS_RIGHTALIGN,rect,this,111); //设置滚动条范围
p_scbHorizontal->SetScrollRange(1,clientWidth/10);
p_scbVertical->SetScrollRange(1,clientHeight/10); //设置滚动条初始位置
p_scbHorizontal->SetScrollPos(1,true);
p_scbVertical->SetScrollPos(1,true);
}
另外注释都是根据我的理解写的,有不对的地方请多指教。

解决方案 »

  1.   

    CScrollView需要创建滚动条吗?
      

  2.   

    什么竖直滚动条和垂直滚动条??
    是水平滚动条和垂直滚动条吧??
    且不说CScrollView不需要你多此一举要加竖直滚动条和垂直滚动条,
    就你提出的问题,你的两个CScrollBar::Create的rect参数都是一样的,当然要重叠了:rect.right -=15;
    //创建水平滚动条
    CScrollBar* p_scbHorizontal=new CScrollBar;
    p_scbHorizontal->Create(WS_CHILD|WS_VISIBLE|SBS_HORZ|SBS_BOTTOMALIGN,rect,this,110);
    //创建垂直滚动条
    rect.bottom -=15;
    rect.right +=15;
    CScrollBar* p_scbVertical=new CScrollBar;
    p_scbVertical->Create(WS_CHILD|WS_VISIBLE|SBS_VERT|SBS_RIGHTALIGN,rect,this,111);
      

  3.   

    CSrollView本身不是就有滚动条的吗~????你还加什么啊~????
    void CTest1View::OnInitialUpdate()
    {
    CScrollView::OnInitialUpdate();
    CSize sizeTotal;
    sizeTotal.cx=1000;
    sizeTotal.cy=1000;
    SetScrollSizes(MM_TEXT,sizeTotal);
    }
    这样当窗口小于1000,1000的时候就会出来滚条了