void CPingPlusDlg::OnPingButton()
{
IconState = 0;
DisplayBlankLine ();
icmpTracing = FALSE;
icmpPingTTL = PingSocket.icmpMaxHops; PingSocket.icmpCurSeq = 0;
SendPing ( );
}
这是一个ping命令的按钮。如何按下之后开始循环ping。再按一次,停止循环。求教
{
IconState = 0;
DisplayBlankLine ();
icmpTracing = FALSE;
icmpPingTTL = PingSocket.icmpMaxHops; PingSocket.icmpCurSeq = 0;
SendPing ( );
}
这是一个ping命令的按钮。如何按下之后开始循环ping。再按一次,停止循环。求教
在次按下按钮式将按钮的文本改为Start,依靠文本的不同来执行响应的语句
if(getdlgitemText()=="start")
{
开始循环ping
setDlgItemText("stop")
}
else if(getdlgitemText()=="stop"))
{
停止循环
setDlgItemText("start");
}
函数的使用格式不对,查查吧,函数是存在的
{
if(m_Bwhile)return;//如果已经在循环,则返回
m_Bwhile=true;//设置变量为真,允许循环
while(m_Bwhile)
{
//循环体内做你需要的事情
doEvents();//记得一定要加上消息处理函数,否则就按不了停止按钮,截面也卡死了
}
}
void MyDlg::停止按钮_被点击()
{
m_Bwhile=false;//改变成员变量,让循环停止
}
void MyDlg::doEvents()
{
MSG msg;
while(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
DispatchMessage(&msg);
TranslateMessage(&msg);
}
}
{
if(m_Bwhile)//如果已经在循环,则停止
{
m_Bwhile=false;//改变成员变量,让循环停止
return;//返回,不继续往下执行
}
m_Bwhile=true;//设置变量为真,允许循环
while(m_Bwhile)
{
//循环体内做你需要的事情
doEvents();//记得一定要加上消息处理函数,否则就按不了停止按钮,截面也卡死了
}
}void MyDlg::doEvents()
{
MSG msg;
while(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
DispatchMessage(&msg);
TranslateMessage(&msg);
}
}
开启按钮:
{
SetTimer(100, 1000, NULL); // 100为timer id,1000为1s
}
关闭按钮
{
KillTimer(100);
}
响应界面的OnTimer(UINT nIDEvent)
{
if (nIDEvent == 100)
{
// do ping
}
}以上伪码,但是应该够详细了,结贴吧~