void CDc_clientDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
if (nIDEvent == PERIOD_TIMER_ID) //如果是定时器1
{
//执行操作
。//省略
do { //......执行部分省略 } while (1); //在这死循环了?
} CDialog::OnTimer(nIDEvent);
}代码如上,我想问题下,MFC里启动定时器后,进入OnTimer时,这个do..while(1);是一直在执行不退出了吗?
还是下次定时时间到,再重新进入Ontimer重新执行一次OnTimer()?
第一次看到这种写法,有点疑惑,还请各位高手指点下!
{
// TODO: Add your message handler code here and/or call default
if (nIDEvent == PERIOD_TIMER_ID) //如果是定时器1
{
//执行操作
。//省略
do { //......执行部分省略 } while (1); //在这死循环了?
} CDialog::OnTimer(nIDEvent);
}代码如上,我想问题下,MFC里启动定时器后,进入OnTimer时,这个do..while(1);是一直在执行不退出了吗?
还是下次定时时间到,再重新进入Ontimer重新执行一次OnTimer()?
第一次看到这种写法,有点疑惑,还请各位高手指点下!
解决方案 »
- LINK : fatal error LNK1104: cannot open file F:\Program Files\HTML Help Workshop\lib\htmlhelp.lib",不在F盘了,却还显示在F盘?为什么呢?
- VC中调用可执行文件,如何得到返回值?
- VS2005 VC++中关于 CString str = "这是一个字符串";的问题
- ATL复合控件的窗口句柄获得。
- 如何将保存的层次关系用TreeCtrl显示出来?
- 为什么在VC源程序中加<afx.h>头文件会出错?
- ◎◎◎ 一个不得不说得 “打印”难题 ◎◎◎
- 一个全局钩子的问题!请高手帮我看一下!!我好急!!
- 请问VC6有最新版本出现吗?有替代它的吗?拜托!!!
- 急寻将bmp转为tiff的源代码?
- 高手请进,如果通过access数据库的文件句柄来操作其中的表和数据? 百思不得其解啊,望高人指点
- 通过rename操作后运行错误
执行语句中应该有情况Break跳出的吧。
struct dc_msg msg; //执行操作
do
{
ret = dcc_msg_receive(m_DccHdl, &msg); //接收数据,存入msg结构体 if (ret <= 0) //如果返回值<=0,连接出错/需要再尝试,需要把此连接 dcc_close()然后再重新用 dcc_init()退出
break; switch (msg.msg_type)
{
case DC_MSG_DATA:
PrintModData(&msg, PRINT_MODE_RECEIVE);
break; case DC_MSG_ONLINE:
case DC_MSG_OFFLINE:
PrintOnOffMsg(&msg); //打印在线状态
break; case DC_MSG_SENDRESULT:
PrintSendResultMsg(&msg);//打印发送状态
break; case DC_MSG_STATUSRESULT:
PrintStatusResultMsg(&msg);//打印状态结果,包含"不存在,上线,下线"
break; case DC_MSG_AT_CMD:
if (m_pSendATCmdDlg != NULL)
m_pSendATCmdDlg->PostMessage(DC_WM_CMP_AT_RESULT, NULL, (UINT)msg.msg_body); //PoseMessage给“远程固件更新”对话框
break;
default: /* Not defined! */
break;
} } while (1); //在这死循环了?
里边的break只是跳出switch吧?也能跳出while吗?
(上次OnTimer结束) && (cpu有时间) && (到了设定的时间) 才会进行下次ontimer
break;
这个break可以跳出整个循环体,其他的只能跳出switch语句……
您帮我看一下我的代码
if (ret <= 0)
break;
唯一能出的应该就是这个语句了。
又碰到一段这样的
while (1)
{
if (dcc_msg_send(m_DccHdl, &msg) > 0) //发送成功
{
//PrintModData(&msg, PRINT_MODE_SEND);
ret = TRUE;
break;
}
else
{
if (IDCANCEL == AfxMessageBox(IDS_SEND_FAILED, MB_RETRYCANCEL|MB_ICONINFORMATION|MB_DEFBUTTON2))
ret = FALSE;
break;
}
}
上面的break应该能退出while(1){}吧??
{
if (dcc_msg_send(m_DccHdl, &msg) > 0) //发送成功
{
//PrintModData(&msg, PRINT_MODE_SEND);
ret = TRUE;
break;
}
else
{
if (IDCANCEL == AfxMessageBox(IDS_SEND_FAILED, MB_RETRYCANCEL|MB_ICONINFORMATION|MB_DEFBUTTON2))
ret = FALSE;
break;
}
}
上面的break应该能退出while(1){}吧??
可以退出