level 1
dialog显示出来以后一直不停的闪 也没法点 怎么回事儿啊
2014年06月05日 06点06分
1
level 1
CProgressCtrl *pProg=(CProgressCtrl*)GetDlgItem(IDC_PROGRESS1);
pProg->SetPos(0);
SetTimer(1000,100,NULL);
void Progress::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
if(nIDEvent==1000)
{
CProgressCtrl *pProg=(CProgressCtrl*)GetDlgItem(IDC_PROGRESS1);
pProg->SetPos(pProg->GetPos()+1);
if(pProg->GetPos()>=100)
{
XianShi j;
j.DoModal();
}
}
CDialog::OnTimer(nIDEvent);
}
2014年06月05日 06点06分
2
level 9
你就这样弹出对话框直接丢计时器中不加控制,不弹死你才怪。
考虑定义个成员变量BOOL m_bPrgStart,用来控制你的计时启动对话框的流程;
想要触发进度条计时启动时 ,将m_bPrgStart 切为TRUE;
进度条到100%时相应要把m_bPrgStart 切回FALSE;
if(TRUE==m_bPrgStart)
{
CProgressCtrl *pProg=(CProgressCtrl*)GetDlgItem(IDC_PROGRESS1);
pProg->SetPos(pProg->GetPos()+1);
if(pProg->GetPos()>=100)
{
m_bPrgStart = FALSE;
XianShi j;
j.DoModal()
}
}
2014年06月05日 08点06分
3
不行啊 这么改还是不停的弹
2014年06月06日 01点06分
回复 12鄂武商 :你不把m_bPrgStart切回TRUE它咋可能不停弹?该不会是你就把它在定时器里头定义成临时变量了吧
2014年06月06日 01点06分
回复 89198408 :在头文件里定义的啊
2014年06月06日 01点06分
回复 12鄂武商 :反正我的意思很明显了:用标志来控制你定时器里头的动作,如果m_bPrgStart不符合条件你觉得定时器里头能跳不进那段代码去么?你自己想想思路吧,别只顾着照搬代码.
2014年06月06日 02点06分