MFC之多線程使用demo

需求:

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;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章