在对话框中做了个滚动条,现在想让滚动条自动滚动,m_Number.SetScrollRange(0,10);现在要从0位置向下滚动,每秒向下滚动一个位置,设置了循环和延迟,为什么滚动调直接就滚动到了最下面,并没有延迟1S后+1的位置向下滚,同时文本框中直接就显示10,而没有0、1、2、3、...的过程?
void CRadioDlg::OnButstart() 
{
m_Number.SetScrollRange(0,10);//滚动条范围
         char sPos[10];
for (int i=0;i<10;i++)、、循环
{
m_Number.SetScrollPos(i);//向下滚动一个位置
                   sleep(1000);              //延迟一秒
itoa(m_Number.GetScrollPos(),sPos,10);//整形转换成字符串
m_Edit2.SetWindowText(sPos);   //在对话框总输出
}
}

解决方案 »

  1.   


    void CRadioDlg::OnButstart()  
    {
      m_Number.SetScrollRange(0,10);//滚动条范围
      CString strPos;
      for (int i=0;i<10;i++)
      {
    m_Number.SetScrollPos(i);
    Sleep(1000);
    strPos.Format(_T("%d"),m_Number.GetScrollPos());
    m_Edit2.SetWindowText(strPos);
      }
    }VS2010运行通过,  PS:你的代码可以编译通过?  ;中英文混合,Sleep写成sleep   还有注释     、、循环  ?
      

  2.   

    你这个也要用定时器
    OnTimer
    void CRadioDlg::OnButstarst()  
    {
    m_Number.SetScrollRange(0,10);//滚动条范围
    SetTimer(1,1000,NULL);
    }void CRadioDlg::OnTimer(UINT nIDEvent) 
    {
        // TODO: Add your message handler code here and/or call default
        static int i= 0;
        i++;
        m_Number.SetScrollPos(i);//向下滚动一个位置
        CString str;
        str.Format("%d",i);
        m_Edit2.SetWindowText(str); //在对话框总输出if(i>=0)
    {
    i=0;
            KillTimer(1);
    }
        
        CDialog::OnTimer(nIDEvent);
    }
      

  3.   

    King_hhuang
    你这是个高手啊!
    谢谢你啊!有问题再请教你
      

  4.   

    回复:King_hhuang
    我现在想让滚动条滚到最大位置后,在自动的滚到最小位置,怎么实现呢 想了半天没想出来,还得求你帮助一下,你刚才代码都很好用的。
      

  5.   


    void CRadioDlg::OnButstarst()  
    {
    m_Number.SetScrollRange(0,10);//滚动条范围
    SetTimer(1,1000,NULL);
    }void CRadioDlg::OnTimer(UINT nIDEvent) 
    {
        // TODO: Add your message handler code here and/or call default
        static int i= 0;
        i++;
        m_Number.SetScrollPos(i);//向下滚动一个位置
        CString str;
        str.Format("%d",i);
        m_Edit2.SetWindowText(str); //在对话框总输出if(i>10)
    {
    i=0;
    m_Number.SetScrollPos(i);//回到起始位置位置
            KillTimer(1);
    }
        
        CDialog::OnTimer(nIDEvent);
    }
      

  6.   


    void CRadioDlg::OnButstarst()  
    {
    m_Number.SetScrollRange(0,10);//滚动条范围
    SetTimer(1,1000,NULL);
    }void CRadioDlg::OnTimer(UINT nIDEvent) 
    {
        // TODO: Add your message handler code here and/or call default
        static int i= 0;
        static BOOL bFlag = TRUE;
        if(bFlag)
        i++;
        else
        i--;
        m_Number.SetScrollPos(i);//向下滚动一个位置
        CString str;
        str.Format("%d",i);
        m_Edit2.SetWindowText(str); //在对话框总输出if(i==0)
    bFlag = TRUE;
    else if(i==10)
    bFlag = FALSE;
        
        CDialog::OnTimer(nIDEvent);
    }