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;

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