我用 AfxBeginThread 创建线程,但在编译时总是出现这样的error:
C2665: 'AfxBeginThread' : none of the 2 overloads can convert parameter 1 from type 'unsigned int (void *)'
请教大家这是怎么回事,我已经是按照书上的例子做了,是不是在编译选项里有不对的地方?

解决方案 »

  1.   

    你定义的是这样的一个函数UINT MyControllingFunction( LPVOID pParam )还是CWinThread的一个实例CWinThread MyThread;
    如果是1
    AfxBeginThread(MyControllingFunction)
    如果是2
    AfxBeginThread(&MyThread)
      

  2.   

    如果是1
    m_Thread = AfxBeginThread(MyControllingFunction, this))
      

  3.   

    UINT MyProc(LPVOID pPara)
    {
      //do something
     }CWinThread * hThread=AfxBeginThread(MyProc,NULL);hThread->SuspendThread();
    hThread->ResumeThread();
      

  4.   

    刚才的问题已经解决,我原来是在一个Dialog里面定义了一个成员函数,作为线程的运行函数,这样是不行的。但我要在线程里用到Dialog的控件,该如何处理呢?我的具体意图是:单击Start Button,线程开始,在Edit里不断显示数据,单击Stop Button,线程结束。
      

  5.   

    小熊说得对,你到底创建什么样的线程?
    看一下MSDN,上面讲得很详细。
      

  6.   

    我的问题是怎样在线程函数里调用Dialog的控件?
      

  7.   

    你要在线程里用到DIALOG的控件
    把线程函数定义位静态的DIALOG类成员函数这样就可以操作控件了也可以把类指针作为参数传递给线程函数
      

  8.   

    UINT MyProc(LPVOID pPara)
    {
       CDialog* pDlg = (CDialog*)pPara;
       ....
       CEdit* edit = pDlg->GetD.....();
       
      //do something
     }CWinThread * hThread=AfxBeginThread(MyProc,(LPVIOD)this);
      

  9.   

    用用户界面线程
    从cthread继承一下,把你的dialog在initinstance中显示就可以了
      

  10.   

    把线程函数定义成static或CYourDialog的友员,把CYourDialog*传给线程函数
      

  11.   

    1 建立线程类 CMyThread  
    2.添加一个对话框指针对象,
    3。添加一个函数SetParentWnd(CWnd *pWnd);或其它
    4.在你的函数中就可用对话框指针处理了

    CMyThread  *m_MediaPlayer;
    m_MediaPlayer=new CMediaPlayer;
    m_DlgMedia=new   CDlgMediaPlay;
    m_DlgMedia->Create(IDD_DLGMEDIAPLAY);
    m_MediaPlayer->AddFile(FileName);
    m_DlgMedia->ShowWindow(SW_SHOW);
    m_MediaPlayer->SetParentWnd(m_DlgMedia->m_hWnd);
    m_MediaPlayer->CreateThread();
    m_MediaPlayer->Play();
      

  12.   

    看问题应该是一个工作线程的程序;所以使用的原型为:
    AfxBeginThread(MyControllingFunction,pParam);
    你看看代码写的对不对?
      

  13.   

    提问的兄弟们,你们为什么就不去看一看MSDN呢?