点击滚动条之后,
发现滚动条也随着页面的滚动一起滚动到屏幕外面去了,
想记录滚动之前滚动条的rect,再用movewindow还原,但是不行,
请问,如何解决。
void CButtonDrawDlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
SCROLLINFO scrollinfo; 
pScrollBar->GetScrollInfo(&scrollinfo,SIF_ALL);  switch (nSBCode) 


case SB_LINEDOWN: 
scrollinfo.nPos += 1; 
if (scrollinfo.nPos>scrollinfo.nMax) 

scrollinfo.nPos = scrollinfo.nMax; 
break; 

pScrollBar->SetScrollInfo(&scrollinfo);  
ScrollWindow(0,-10); 
break;  case SB_LINEUP: 
nPos = pScrollBar->GetScrollPos();
scrollinfo.nPos += 1; 
if (scrollinfo.nPos <scrollinfo.nMin) 

scrollinfo.nPos = scrollinfo.nMin; 
break; 

pScrollBar->SetScrollInfo(&scrollinfo);  
                  ScrollWindow(0,10); 
break; 
}
CDialog::OnVScroll(nSBCode, nPos, pScrollBar);

  滚动条是自己添加上去的,关联了类变量 CScrollBar* pScrollBar;
  在OnInitDialog中
  pScrollBar = (CScrollBar*)GetDlgItem(IDC_ScrolV);

解决方案 »

  1.   

    ShowScrollBar,
    响应OnVScroll不添加控件。
      

  2.   


    你的意思是添加默认的动作条?  你说的这个办法是不是和在资源里面添加 vertical scrollbar 一样么?
      

  3.   

    ........
    //重新设置滚动条位置
    CRect rect; 
    CRect reVScroll; 

    GetClientRect(&rect); 
    int nScrollWidth = GetSystemMetrics(SM_CYVSCROLL); 
    reVScroll.SetRect(rect.right - nHorzScrollHeight, rect.top, rect.right , rect.bottom); 
    pScrollBar->MoveWindow(&reVScroll); CDialog::OnVScroll(nSBCode, nPos, pScrollBar);