需求:
1、新建线程,完成udpsocket端口监听,持续接收数据;
2、接收到的数据绘制到MFC对话框的界面上。
知识点:
1、SOCKET的使用
2、线程的创建和安全退出
3、线程函数如何使用主线程中的变量
4、线程函数收到的数据如何传递到主线程中,供控件使用
创建线程,传递this到线程函数中:
m_iShowValue = 0;
m_bIsRun = true;
AfxBeginThread(Fun, this, NULL);
线程函数:
UINT Fun(LPVOID pParam)
{
CMFCApplication1Dlg * dlg = (CMFCApplication1Dlg*)pParam;
while (dlg->m_bIsRun)
{
dlg->m_iShowValue++;
SendMessage(dlg->GetSafeHwnd(), 1001, NULL, dlg->m_iShowValue);//发送消息给主线程
//UpdateData(FALSE);
}
return 0;
}
定义接收消息的函数:
afx_msg LRESULT OnMyMessage(WPARAM wparam,LPARAM lparam);
BEGIN_MESSAGE_MAP(CMFCApplication1Dlg, CDialogEx)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON1, &CMFCApplication1Dlg::OnBnClickedButton1)
ON_MESSAGE(1001, &CMFCApplication1Dlg::OnMyMessage)
END_MESSAGE_MAP()
消息函数实现:
LRESULT CMFCApplication1Dlg::OnMyMessage(WPARAM wparam,LPARAM lparam)
{
m_iShowValue = lparam;
UpdateData(FALSE);
return 0;
}