UINT __cdecl MyControllingFunction( LPVOID pParam )  //定义线程一个参数
{
CString st;
st.Format("%s",pParam);
AfxMessageBox(st);   //////////////输出乱码
return 1;
}
CThread::startThread()
{
CString str;
str="hello world!";
AfxBeginThread(MyControllingFunction,&str);
}
没道理啊,还有要传两个参数怎么办,什么结构体,谁能帮我写一下

解决方案 »

  1.   

    UINT __cdecl MyControllingFunction( LPVOID pParam ) //定义线程一个参数

    AfxMessageBox((CString*)pParam);
    return 1;
    }传两个参数用struct,这个要自己定
      

  2.   

    传递动态分配的数组 new,或者str设为类成员变量
      

  3.   

    error C2665: 'AfxMessageBox' : none of the 2 overloads can convert parameter 1 from type 'class CString *'
    换成(char *)跟我上面输出一样是个乱码的一个字,居然还输出了一个"呆",我操!
      

  4.   


    线程函数可以是全局的或static成员函数...传入new动态分配的数组,或者全局的str,或者传递类的指针进去,用指针访问成员str
      

  5.   

    error C2665: 'AfxBeginThread' : none of the 2 overloads can convert parameter 1 from type 'unsigned int (void *)'
    改后就成这样的了,必须的全局的?类型都没变,改成类函数后类型就不对了,晕
      

  6.   

    是不是设置为static成员函数?
      

  7.   

    总结一下:函数得是全局的或是static的传参数时也得用全局的,局部的也不能在全局访问啊,还要注意全局时候初始化变量,不然link会错误`类成员可以不初始化(不信你试试)