zoukankan      html  css  js  c++  java
  • MFC 多线程-MFC工作者线程向主线程传递消息

    https://blog.csdn.net/zhuyonghao123/article/details/8167186

    MFC工作者线程向主线程传递消息:

            我们在编写VC网络应用程序时,经常会用到2个线程,一个是主线程,主线程负责与界面相关的工作;一个是网络接收线程,负责接收网路上的数据,它在后台工作,接收线程经常需要与主线程进行交互,例如接收到的数据要显示在窗口中等。由于工作者线程没有消息队列和消息循环,因此它不能接收和处理消息,只能发送消息。

    先定义一个结构体用于参数传输

    struct RECVPARAM{

           SOCKET sock;             //已创建的套接字

           HWND hwnd;               //对话框句柄

    };

    RECVPARAM *pRecvParam = new RECVPARAM;

    pRecvParam->sock = m_sock;

    pRecvParam->hwnd = m_hWnd;

    创建接收线程

    HANDLE hThread=CreateThread(NULL,0,RecvProc,(LPVOID)pRecvParam,0,NULL);

    线程入口函数为全局函数或静态类成员函数

    DWORD WINAPI RecvProc(LPVOID lpParameter);                       //全局函数

    static DWORD WINAPI RecvProc(LPVOID lpParameter);              //静态类成员函数(声明)

    DWORD WINAPI CchatDlg::RecvProc(LPVOID lpParameter)        //静态类成员函数(实现)

    {

           SOCKET sock=((RECVPARAM*)lpParameter)->sock;

           HWND hwnd=((RECVPARAM*)lpParameter)->hwnd;

           char recvBuf[200];

           char tempBuf[300];

           while(1)

           {

                    //接收数据

                    …

                    //发送到主线程

                    sprintf(tempBuf,”%s 说: %s”,inet_ntoa(addrFrom.sin_addr),recvBuf);

                    ::PostMessage(hwnd,WM_RECVDATA,0,(LPARAM)tempBuf);

                    //给界面发送消息(主线程)

            }

    }

    窗口类头文件中添加消息定义

           #define WM_RECVDATA      WN_USER+1

    声明消息响应函数

    afx_msg void OnRecvData(WPARAM wParam,LPARAM lParam);

    添加消息映射

    ON_MESSAGE(WM_RECVDATA,OmRecvData)

    定义消息响应函数

    void CchatDlg::OnRecvData(WPARAM wParam, LPARAM lParam)

    {

           Cstring str = (char*)lParam;

           Cstring strTemp;

           //获取已有数据

           GetDlgTiemText(IDC_EDIT_RECV,strTemp);

           str += “ ”;

           str + strTemp;

           //显示所有数据

           SetDlgItemText(IDC_EDIT_RECV,str);

    }

  • 相关阅读:
    Construct Binary Tree from Preorder and Inorder Traversal
    Construct Binary Tree from Inorder and Postorder Traversal
    Maximum Depth of Binary Tree
    Sharepoint 2013 创建TimeJob 自动发送邮件
    IE8 不能够在Sharepoint平台上在线打开Office文档解决方案
    TFS安装与管理
    局域网通过IP查看对方计算机名,通过计算机名查看对方IP以及查看在线所有电脑IP
    JS 隐藏Sharepoint中List Item View页面的某一个字段
    SharePoint Calculated Column Formulas & Functions
    JS 两个一组数组转二维数组
  • 原文地址:https://www.cnblogs.com/CipherLab/p/13754790.html
Copyright © 2011-2022 走看看