我先执行ONtimer,一切正常,然后点击1次按钮OnStoprecv用killtimer(1),停止了settimer,,当我再次点击他时,执行settimer,因为在ONtimer里编号了,所以我认为ontimer应该重头执行,可他为什么不把第一个数据给我的控件变量呢,请问错再哪了,
void CCommDlg::OnButton1()
{
UpdateData(TRUE);
if(m_hexsend.GetCheck())
{
CByteArray data;
int len=Str2Hex(m_SendData,data);
m_Comm.SetOutput(COleVariant(data));//发送数据
}
else m_Comm.SetOutput(COleVariant(m_SendData));//发送数据
SetTimer(1,1000,NULL);
}
void CCommDlg::OnStoprecv()
{
UpdateData();
static int n=0;
{
n++;
if(n==1)
{
m_stop.SetWindowText("继续监测");
KillTimer(1);
UpdateData(FALSE);
}
if(n==2)
{
m_stop.SetWindowText("暂停监测");
OnTimer(1);
UpdateData(FALSE);
}
}
}
void CCommDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call defaultstatic int y=0;
switch (nIDEvent)
{
case 1:
y++;
OnButton1() ; //发送数据
{
if(y==1)
{
//SetDlgItemText(IDC_cszl1,kk);
m_cszl1=kk.Right(5);;
UpdateData(FALSE);
}
else
{
//m_ReceiveData+=str;
m_ReceiveData=kk.Right(5);
UpdateData(FALSE);
}
}
break;
//UpdateData(FALSE);
CDialog::OnTimer(nIDEvent);
}
}
void CCommDlg::OnButton1()
{
UpdateData(TRUE);
if(m_hexsend.GetCheck())
{
CByteArray data;
int len=Str2Hex(m_SendData,data);
m_Comm.SetOutput(COleVariant(data));//发送数据
}
else m_Comm.SetOutput(COleVariant(m_SendData));//发送数据
SetTimer(1,1000,NULL);
}
void CCommDlg::OnStoprecv()
{
UpdateData();
static int n=0;
{
n++;
if(n==1)
{
m_stop.SetWindowText("继续监测");
KillTimer(1);
UpdateData(FALSE);
}
if(n==2)
{
m_stop.SetWindowText("暂停监测");
OnTimer(1);
UpdateData(FALSE);
}
}
}
void CCommDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call defaultstatic int y=0;
switch (nIDEvent)
{
case 1:
y++;
OnButton1() ; //发送数据
{
if(y==1)
{
//SetDlgItemText(IDC_cszl1,kk);
m_cszl1=kk.Right(5);;
UpdateData(FALSE);
}
else
{
//m_ReceiveData+=str;
m_ReceiveData=kk.Right(5);
UpdateData(FALSE);
}
}
break;
//UpdateData(FALSE);
CDialog::OnTimer(nIDEvent);
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货