我建立了一个基于CScrollView的CWBView类,想在文本框中输入一个值来控制CScrollBar的位置。是这样写吗?
void CWBView::OnScrollPosView(int npos)
{
CScrollBar* pBar = GetScrollBarCtrl(SB_VERT);
pBar->SetScrollPos(npos);
}
但是运行后程序没响应?请高手指点,谢谢!!
void CWBView::OnScrollPosView(int npos)
{
CScrollBar* pBar = GetScrollBarCtrl(SB_VERT);
pBar->SetScrollPos(npos);
}
但是运行后程序没响应?请高手指点,谢谢!!
的问题?还是事件的问题?如果是后者,要建立什么事件呢?
void CWBView::OnScrollPosView(int npos)
{
SetScrollPos(SB_VERT,npos, TRUE);
}
但又出现另一个问题,滚动条会自动回滚,还有视图里面的内容不会动。
void CShowFontView::OnInitialUpdate()//设置scroll范围,如文件有100行,那就设100*行的点数
{
CScrollView::OnInitialUpdate();
//
CShowFontDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
int CharHei=pDoc->m_fntSize+2;
//
CSize sizeTotal=GetTotalSize();
CSize page(0,0);
CSize line(0,0);
if(sizeTotal.cx==0 && sizeTotal.cy==0)
{
sizeTotal.cx = 60*8;
sizeTotal.cy = 7240;//3710;
SetScrollSizes(MM_TEXT, sizeTotal);
}
else
{
page.cy=CharHei*20;
line.cy=CharHei;
SetScrollSizes(MM_TEXT, sizeTotal,page,line);
}
}
ScrollToPosition(pt);
就可以,pt是屏幕左上角位置
如果视图没有改变,则加下面语句:
RedrawWindow();
立即重绘。
ScrollWindow(0,(scrollinfo.nPos-npos)*10);//按步长滚动窗口
scrollinfo.nPos = npos; //将新位置的值传入
SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);//scrollinfo并设置 最后一个问题就是滚动条会自动回0,怎么解决?其实我是想远程控制CScrollView中的滚动条,具体请看
http://topic.csdn.net/u/20110228/13/ec2d77ba-207a-44ea-8753-93f9aeb4f2f2.html