【】MFC对话框程序中SetTimer定时器无法响应?解决办法
【】MFC对话框程序中SetTimer定时器无法响应?
void CToolDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
MessageBox("已进入OnTimer函数");
if (nIDEvent == 10)
{
Timer1 ++;
MessageBox("定时器中...");
if (Timer1 == 5)
{
PCPause = 0;
Timer1 = 0;
}
}
CDialog::OnTimer(nIDEvent);
}
void CToolDlg::OnButton_Delaysend()
{
// TODO: Add your control notification handler code here
SetTimer(10,1000,NULL);
PCPause = 1;
m_mscom.SetOutput(COleVariant(m_Send));
while(PCPause);
MessageBox("已经发送一次");
m_mscom.SetOutput(COleVariant(m_Send));
MessageBox("已经发送两次");
KillTimer(10);
}
没有一个MessageBox能弹出,也就是说OnTimer没响应,这是为什么?求解!
------解决方案--------------------
while(PCPause);
死循环了,要等OnButton_Delaysend退出才能进OnTimer, 这是一个线程的
------解决方案--------------------
------解决方案--------------------
单线程 的执行顺序楼主没搞明白吧 呵呵
想测试 settimer 把 killtimer 放到 ONtimer 里面执行 看看
当然 还得把你的 死循环干掉
void CToolDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
MessageBox("已进入OnTimer函数");
if (nIDEvent == 10)
{
Timer1 ++;
MessageBox("定时器中...");
if (Timer1 == 5)
{
PCPause = 0;
Timer1 = 0;
}
}
CDialog::OnTimer(nIDEvent);
}
void CToolDlg::OnButton_Delaysend()
{
// TODO: Add your control notification handler code here
SetTimer(10,1000,NULL);
PCPause = 1;
m_mscom.SetOutput(COleVariant(m_Send));
while(PCPause);
MessageBox("已经发送一次");
m_mscom.SetOutput(COleVariant(m_Send));
MessageBox("已经发送两次");
KillTimer(10);
}
没有一个MessageBox能弹出,也就是说OnTimer没响应,这是为什么?求解!
------解决方案--------------------
while(PCPause);
死循环了,要等OnButton_Delaysend退出才能进OnTimer, 这是一个线程的
------解决方案--------------------
------解决方案--------------------
单线程 的执行顺序楼主没搞明白吧 呵呵
想测试 settimer 把 killtimer 放到 ONtimer 里面执行 看看
当然 还得把你的 死循环干掉