需求:
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;
}