在对话框中拖入了一个垂直滚动条,添加了相应的变量m_vScroll,m_vScroll.SetScrollRange(0, 15);设置了滚动条的范围在OnVScroll中代码如下
void CScrollDemoDlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
int nPosMin, nPosMax;
pScrollBar->GetScrollRange(&nPosMin, &nPosMax);
CRect rect;
int Pos = pScrollBar->GetScrollPos();
switch(nSBCode)
{
case SB_LINEDOWN: Pos += 2; break;
case SB_LINEUP: Pos -= 2; break;
case SB_PAGEDOWN:Pos +=5;break;
case SB_PAGEUP: Pos -= 5; break;
case SB_THUMBPOSITION: Pos = nPos; break;
case SB_THUMBTRACK: Pos = nPos; break;
}
if (Pos>nPosMax)
{
Pos = nPosMax;
}
if (Pos< nPosMin)
{
Pos = nPosMin;
}
pScrollBar->SetScrollPos(Pos);
ScrollWindow(0, -(Pos - nPos), NULL, NULL); CDialog::OnVScroll(nSBCode, nPos, pScrollBar);
}现在的问题是:调用 ScrollWindow之后为什么滚动条控件位置也不断地在改变?有什么好的解决方案没有?
void CScrollDemoDlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
int nPosMin, nPosMax;
pScrollBar->GetScrollRange(&nPosMin, &nPosMax);
CRect rect;
int Pos = pScrollBar->GetScrollPos();
switch(nSBCode)
{
case SB_LINEDOWN: Pos += 2; break;
case SB_LINEUP: Pos -= 2; break;
case SB_PAGEDOWN:Pos +=5;break;
case SB_PAGEUP: Pos -= 5; break;
case SB_THUMBPOSITION: Pos = nPos; break;
case SB_THUMBTRACK: Pos = nPos; break;
}
if (Pos>nPosMax)
{
Pos = nPosMax;
}
if (Pos< nPosMin)
{
Pos = nPosMin;
}
pScrollBar->SetScrollPos(Pos);
ScrollWindow(0, -(Pos - nPos), NULL, NULL); CDialog::OnVScroll(nSBCode, nPos, pScrollBar);
}现在的问题是:调用 ScrollWindow之后为什么滚动条控件位置也不断地在改变?有什么好的解决方案没有?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货