没有重画什么!
就想简单点....我用下面代码变色,在循环中...
m_Processor.SendMessage(PBM_SETBARCOLOR,0,
(LPARAM)(COLORREF)RGB(dwR+i,dwG,dwB));
但是,进度运行时 不断刷新,一闪一闪的....
有没有办法让他不闪........void CProcessorDlg::OnStart()
{
DWORD dwR = 0,dwG = 0,dwB = 0; //颜色
m_Processor.SetRange(0,200);//进度条范围
m_Processor.SetPos(0);
for (int i = 0;i < 200;i++ )
{
m_Processor.SetPos(i);//进度加 1
m_Processor.SendMessage(PBM_SETBARCOLOR,0,
(LPARAM)(COLORREF)RGB(dwR+i,dwG,dwB)); //变色
::Sleep(5);//5毫秒,进度走一
}
}void CProcessorDlg::OnEnd()
{
m_Processor.SetPos(0);//回到开始
}
就想简单点....我用下面代码变色,在循环中...
m_Processor.SendMessage(PBM_SETBARCOLOR,0,
(LPARAM)(COLORREF)RGB(dwR+i,dwG,dwB));
但是,进度运行时 不断刷新,一闪一闪的....
有没有办法让他不闪........void CProcessorDlg::OnStart()
{
DWORD dwR = 0,dwG = 0,dwB = 0; //颜色
m_Processor.SetRange(0,200);//进度条范围
m_Processor.SetPos(0);
for (int i = 0;i < 200;i++ )
{
m_Processor.SetPos(i);//进度加 1
m_Processor.SendMessage(PBM_SETBARCOLOR,0,
(LPARAM)(COLORREF)RGB(dwR+i,dwG,dwB)); //变色
::Sleep(5);//5毫秒,进度走一
}
}void CProcessorDlg::OnEnd()
{
m_Processor.SetPos(0);//回到开始
}
void CProcessorDlg::OnStart()
{
DWORD dwR = 0,dwG = 0,dwB = 0; //颜色
m_Processor.SetRange(0,200);//进度条范围
m_Processor.SetPos(0);
SetTimer(1, 2000, 0);
}void CProcessorDlg::OnEnd()
{
m_Processor.SetPos(0);//回到开始
}
static int i=0;
void CProcessorDlg::OnTimer(UINT nIDEvent)
{
if(nIDEvent != 1)
return;
m_Processor.SetPos(i);//进度加 1
m_Processor.SendMessage(PBM_SETBARCOLOR,0,
(LPARAM)(COLORREF)RGB(dwR+i,dwG,dwB)); //变色
i++;
if(i == 200)
KillTimer(1);
}
m_Processor.SendMessage(PBM_SETBARCOLOR,0,
(LPARAM)(COLORREF)RGB(dwR+i,dwG,dwB)); //变色是不是要换个地方发消息..老兄,有没有其他办法....vckbase的这段代码重画了CProgressCtrl..俺还没全看懂它的代码..
还有个怪问题.... 我按了 OnStart() 后,进度条一点点的读,读完后,我按OnEnd()复位到开始,然后我在按OnStart() ,进度条很快读完(而且不停).不知是不是,TIME消息优先级较低的原因.
我实习第二天,项目紧没办法.谢谢!!!!
void CProcessorDlg::OnStart()
{
m_Processor.SetRange(0,200);//进度条范围
m_Processor.SetPos(0);
SetTimer(1, 50, 0);
}
void CProcessorDlg::OnEnd()
{
KillTimer(1);
m_Processor.SetPos(0);//回到开始
}
static int i=0;
void CProcessorDlg::OnTimer(UINT nIDEvent)
{
DWORD dwR = 0,dwG = 0,dwB = 0; //颜色
if(nIDEvent != 1)
return;
m_Processor.SetPos(i);//进度加 1
m_Processor.SendMessage(PBM_SETBARCOLOR,0,
(LPARAM)(COLORREF)RGB(dwR+i,dwG,dwB)); //变色
i++;
if(i == 200)
KillTimer(1);
}