我在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);
}
另外注释都是根据我的理解写的,有不对的地方请多指教。
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);
}
另外注释都是根据我的理解写的,有不对的地方请多指教。
是水平滚动条和垂直滚动条吧??
且不说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);
void CTest1View::OnInitialUpdate()
{
CScrollView::OnInitialUpdate();
CSize sizeTotal;
sizeTotal.cx=1000;
sizeTotal.cy=1000;
SetScrollSizes(MM_TEXT,sizeTotal);
}
这样当窗口小于1000,1000的时候就会出来滚条了