基于单文档的程序,下面是一个基于子对话框的类CDlgZaixian_Jiance,设计按下按钮调用其一个函数:
void CDlgZaixian_Jiance::OnZJDraw() 
{
     ....
    //进入直径在线检测线程
    ThreadReadData=AfxBeginThread(GrabThread_ZJ_ZaiXian,NULL,THREAD_PRIORITY_IDLE);
}线程函数为:
//直径在线检测线程
UINT GrabThread_ZJ_ZaiXian(LPVOID pParam)
{
   SetDlgItemText(IDC_ZhiJing_10,s);
   DoEvents();//使得测量数据动态显示
}
DoEvents()函数为类CDlgZaixian_Jiance的一个public函数
void CDlgZaixian_Jiance::DoEvents()
{
......
}
此时编译时候报错:
D:error C2660: 'SetDlgItemTextA' : function does not take 2 parameters
D:error C2065: 'DoEvents' : undeclared identifier
另外好像MessageBox("!","系统提示!",MB_OK|MB_ICONWARNING)也用不了的。请教高手,在自定义的线程中,如何调用一些MessageBox之类的函数,以及一些同一类中的函数及成员变量呐?
另外如果是其余类的类函数及成员变量,在线程中如何调用呐?请指教,谢谢!10

解决方案 »

  1.   

    MessageBox 要用全局的 ::MessageBox();LPVOID pParam 传递你对话框的指针等进去,然后再线程函数中调用...UINT GrabThread_ZJ_ZaiXian(LPVOID pParam) 

      CDlgZaixian_Jiance* pCDlg = (CDlgZaixian_Jiance*)pParam;
      pCDlg->SetDlgItemText(IDC_ZhiJing_10,s); 
      pCDlg->DoEvents();//使得测量数据动态显示 

      

  2.   

    GrabThread_ZJ_ZaiXian()是全局函数,不是成员函数。
    SetDlgItemText()使用全局的或加对象指针,DoEvents()加对象调用。
      

  3.   

    oyljerry 你好,我是新手,请问如何得到本对话框的指针,并如何传进去啊?另外我刚试::MessageBox(); 了,还是不认啊,请指教。
      

  4.   

    线程启动的时候传递进去
    ThreadReadData=AfxBeginThread(GrabThread_ZJ_ZaiXian,(LPVOID)this,THREAD_PRIORITY_IDLE); 
      

  5.   

    shequay 你好,我在单文档主程序*View.cpp中已经定义了一个子对话框的类对象A,并通过A.DoModal显示了该子对话框,但是这个类对象在子对话框类.cpp中不认了啊,难道我再定义一个此对话框的类对象啊?请指教,谢谢
    另外SetDlgItemText()如何使用全局啊?
      

  6.   


    //基于单文档的程序,下面是一个基于子对话框的类CDlgZaixian_Jiance,设计按下按钮调用其一个函数: 
    void CDlgZaixian_Jiance::OnZJDraw() 

        .... 
        //进入直径在线检测线程 
        //ThreadReadData=AfxBeginThread(GrabThread_ZJ_ZaiXian,NULL,THREAD_PRIORITY_IDLE); 
       // 改为下面这个
       ThreadReadData=AfxBeginThread(GrabThread_ZJ_ZaiXian,this,THREAD_PRIORITY_IDLE); 
    } 线程函数为: 
    //直径在线检测线程 
    UINT GrabThread_ZJ_ZaiXian(LPVOID pParam) 

      //SetDlgItemText(IDC_ZhiJing_10,s); 
      //DoEvents();//使得测量数据动态显示 
     
      // 改为这个
      CDlgZaixian_Jiance* pthis = (CDlgZaixian_Jiance*)pParam;
      pthis->SetDlgItemText(IDC_ZhiJing_10,s); 
      pthis->DoEvents();//使得测量数据动态显示 

    DoEvents()函数为类CDlgZaixian_Jiance的一个public函数 
    void CDlgZaixian_Jiance::DoEvents() 

    ......