线程函数CreateThread(funProc)中其中这个funProc是函数地址,但对此要求是静态或者全局的函数。
那么如果我想让这个funProc函数能动态显示文本信息,比如其中的编辑框变量m_edit就不是静态或全局变量了,这时候我的程序就会报错。那么我如何使得线程下的函数可以动态显示信息呢,是需要跳转到另一个函数,还是如何实现?

解决方案 »

  1.   


    必须要这么做的
    线程中试图对GUI线程进行UpdateData都是会崩溃的在线程中给窗口发送自定义消息,由消息响应函数去显示更新
      

  2.   

    AfxBeginThread创建线程的时候传递UI线程的HWND窗口句柄,在线程函数中发送自定义消息到UI线程,在UI线程中去更新控件信息。
      

  3.   

    z这样也可以:HANDLE Thread=CreateThread(NULL,0,TimerProc,(LPVOID)this,0,NULL);
        CloseHandle(Thread);UINT TimerProc(WPARAM wParam,LPARAM lParam)
    {
      CMyView *pView=(CMyView*)wParam; // 传类指针进来就可以,
                                           // 直接调用View  中的函数更新数据没问题 的!
      while(1)
      {
        ...........
        ..........
        Sleep(1);
      }
    }
      

  4.   


    //自定义消息
    #define WM_MY_MSG WM_USER+1//线程函数
    DWORD MyThreadProc(LPVOID *lpParam)
    {
    HWND hWnd=(HWND)wParam;
            //发送自定义消息
    SendMessage(hWnd, WM_MY_MSG, 0, 0);
    }
    //创建工作线程
    HANDLE Thread=CreateThread(NULL,0,MyThreadProc,(LPVOID)m_hWnd,0,NULL);在接收窗口处理自定义消息大概思路就是这样的