如上,我想写一个通讯的程序,将从另一端电脑发送的数据接收并显示在rich edit里,这段接收数据的代码我希望通过ThreadProc来完成,但是我使用CreateThread或是AfxBeginThread都无法完成,因为我将ThreadProc声明为类的一个成员函数,
但是线程函数里的参数必须是全局或是静态变量,如果我将ThreadProc声明为全局函数,却无法完成将数据显示在rich edit这个功能????

解决方案 »

  1.   

    可以是成员函数,你把你的类this指针当成参数传给进程进程里面把指针转成你的类,然后调用成员函数就行了
      

  2.   

    声明线程函数为静态类成员函数,然后用this指针作为线程函数的参数就可以操作类里面的其他参数和变量等了。
      

  3.   

    楼上说的没错,一般都是传递this指针,参数传递可以根据自己的需要来定制,参数复杂的话就传递结构体~
      

  4.   

    public:
    static UINT __cdecl ThreadProc( LPVOID pParam );AfxBeginThread(ThreadProc,this);DWORD WINAPI CYourDlg::ThreadProc(LPVOID pArgs)
    {
    CYourDlg*pYourDlg = (CYourDlg*)pArgs;
    ///////
      

  5.   

    对,AfxBeginThread(ThreadProc,this); 
    传递this指针,然后访问对话框类里的成员。代码如楼上所示。
      

  6.   

    创建一个ThreadProc全局线程后,把对话框对象this作为参数传进去就可以了。然后到线程中转换成对话框对象,就可以操作控件了。
      

  7.   

    把窗口handle作为参数,然后PostMessage(handle...........),就可以设置了...........