DDX_Control(pDX, IDC_STATIC_CONNSTATE, m_labConnState);
IDC_STATIC_CONNSTATE 是某静态控件的ID,设置这个静态控件的控制变量m_labConnState,于是自动生成了上面的那句话
CLabel m_labConnState; 定义了这个控制变量为CLabel 类
然后就可以调用它的方法了:
#ifdef _CHS //注意这些代码都是写在OnInitDialog()初始化函数中的 实现中英文的切换
m_labConnState.SetText("发卡器未连接");
#else
m_labConnState.SetText("Card Issuer Not Connected");
#endif
在初始化函数中就实现了网络的连接,BOOL bOk = InitResource(); 这个函数据调用了UDP类的函数,打开了网路连接
stdafx.h文件中包含了一些必要的头文件(如afxwin.h)在初始化的时候PostMessage(WM_CLOSE); 在某种情况下发送一个关闭的消息
PostMessage是Windows API(应用程序接口) 中的一个常用函数,用于将一条消息放入到消息队列中。
函数功能
该函数将一个消息放入(寄送)到与指定窗口创建的线程相联系消息队列里,不等待线程处理消息就返回,是异步消息模式。消息队列里的消息通过调用GetMessage和PeekMessage取得。
StartUdpServer 在初始化的时候就开了资源
定时器的用法
SetTimer(TIMER_LEDTIME,1000,NULL);
#define TIMER_AUTODETECH 1000 //自动连接UDP的时间定时器的编号
#define TIMER_LEDTIME 1001 //灯亮的时间定时器的编号
#define TIMER_SENDHTOWEB 1002 //定时发送穿透数据到web 确保web能发送数据回来
1表示定时器的ID,1000表示没1000ms也就是1s调用一次处理函数,最后一个参数是处理的函数,如果填NULL表示,使用系统默认的,默认处理函数是On
定时器的处理函数:
On
void
{
}
void CCardIssuerDlg::OnTimer(UINT nIDEvent)
OnTimer函数直接写在对话类的CPP文件里面,没有被调用过,类似于单片机中的定时器中断函数,中断函数就是最高层了,是不受其他函数所调用的
通过了定时器的操作函数把数据添加到了链表中 m_lsSendMsg.AddTail(stMsg);
然后再这个CUDP的发送线程里 CUdpServer::threadUdp(LPVOID lp) 轮询等待 while(pUdpServer->m_lsSendMsg.GetCount()),不断发送,直到数据发送完毕为止