在对话框中做了个滚动条,现在想让滚动条自动滚动,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); //在对话框总输出
}
}
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); //在对话框总输出
}
}
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 还有注释 、、循环 ?
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);
}
你这是个高手啊!
谢谢你啊!有问题再请教你
我现在想让滚动条滚到最大位置后,在自动的滚到最小位置,怎么实现呢 想了半天没想出来,还得求你帮助一下,你刚才代码都很好用的。
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);
}
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);
}