那个什么《……你问我答》上面的例子
BOOL CMyThreadDlg::OnInitDialog() 
{
CDialog::OnInitDialog();

//启动两个线程
::AfxBeginThread(ThreadProc1,GetSafeHwnd());
::AfxBeginThread(ThreadProc2,GetSafeHwnd());
//.....
 }编译没同过:
D:\ROYIN\VC\MulThread\MyThreadDlg.cpp(62) : error C2665: 'AfxBeginThread' : none of the 2 overloads can convert parameter 1 from type 'unsigned int (void *)'
其中的ThreadProc1()是这样的:UINT ThreadProc1(LPVOID lParam)
{
     
 }我知道是类型不对,就是不知道怎么转换啦,郁闷~

解决方案 »

  1.   

    强制类型转换一下试试:
    ::AfxBeginThread((AFX_THREADPROC)ThreadProc1,GetSafeHwnd());
    ::AfxBeginThread((AFX_THREADPROC)ThreadProc2,GetSafeHwnd());
      

  2.   

    或者
    ::AfxBeginThread((AFX_THREADPROC)ThreadProc1,(LPVOID)GetSafeHwnd());
    ::AfxBeginThread((AFX_THREADPROC)ThreadProc2,(LPVOID)GetSafeHwnd());
      

  3.   

    ThreadProc1定义为全局静态
    AfxBeginThread(ThreadProc1,GetSafeHwnd(),THREAD_PRIORITY_NORMAL);
      

  4.   

    GetSafeHwnd不需要转换类型,可以在线程中再类型转换
      

  5.   

    ThreadProc1定义为
    UINT ThreadProc1(LPVOID lParam)
      

  6.   

    呵呵问题解决:谢谢各位
    我把 UINT ThreadProc1(LPVOID lParam);
    UINT ThreadProc2(LPVOID lParam);定义为全局函数编译通过之前是在对话框类里定义的:
    class CMyThreadDlg : public CDialog
    {
    // Construction
    public:
    CMyThreadDlg(CWnd* pParent = NULL);   // standard constructor
             //UINT .....不知道这样为什么不可以了?
      

  7.   

    线程函数必须是全局函数,或者类内部静态函数。
    ::AfxBeginThread(ThreadProc1,(LPVOID)GetSafeHwnd());
    ::AfxBeginThread(ThreadProc2,(LPVOID)GetSafeHwnd());
      

  8.   

    .h文件中定义
    //线程函数
    static UINT ThreadFun(LPVOID lParam).cpp文件中UINT CCDlg::ThreadFun(LPVOID lParam)
    {
        CCDlg* pClass = (CCDlg*)lParam;
        //pClass就是你传递进来的指针
    }void CCDlg::Start()
    {
          //启动线程
          AfxBeginThread(ThreadFun,this,THREAD_PRIORITY_NORMAL);
    }
      

  9.   

    这样就可以了:
    ::AfxBeginThread(ThreadProc1,(LPVOID)GetSafeHwnd());
    ::AfxBeginThread(ThreadProc2,(LPVOID)GetSafeHwnd());
      

  10.   

    我整理一下,不要分
    ::AfxBeginThread(ThreadProc1,(LPVOID)GetSafeHwnd());
    ::AfxBeginThread(ThreadProc2,(LPVOID)GetSafeHwnd());ThreadProc1的声明:
    static UINT ThreadProc2(LPVOID lParam);
    不建议使用全局函数