我在MFC中用到多线程,在其中一个线程函数中用到SetDlgItemText()函数,但是出现错误error C2065: 'SetDlgItemText' : undeclared identifier。改为  ::SetDlgItemText()后出现'SetDlgItemText' : is not a member of '`global namespace''错误,还请哪位高手指教?谢谢

解决方案 »

  1.   

    通过线程函数的参数pParam,传递对话框的指针进去,然后在线程函数中转换会对话框的指针,pDlg->SetDlgItemText()...来调用
      

  2.   


    正解。也可以传入对话框窗口的句柄, ::SetDlgItemText(HWND hDlg, int nIDDlgItem, LPCTSTR lpString);
      

  3.   

    ::SetDlgItemText(HWND hDlg, int nIDDlgItem, LPCTSTR lpString); 
    这样用时,需要在你的线程文件中包含头文件:Windows.h
      

  4.   

    先得到ITEM的窗口指针再调用SetWindowText(strTxt);
    GetDlgItem(IDC_MY_EDIT)->SetWindowText("abc");
      

  5.   

    由于是新手,所以还麻烦oyljerry能不能给个比较详细的示例,谢谢
      

  6.   

    我包含了Windows.h还是用不了::SetDlgItemText函数啊
      

  7.   

    我的方法是:在对话框类里添加CWnd* cWnd;
    线程函数声明:void ThreadFunc(LPVOID);
    void ThreadFunc(LPVOID lparam)
    {
    m_bRun=true;//线程是否在运行
    CTime time;
    CString strTime;

    while(m_bRun)
    {
    time=CTime::GetCurrentTime();
    strTime=time.Format("%H:%M:%S");
    ((CWnd*)lparam)->SetDlgItemText(IDC_TEXT,strTime);
    //尤其注意这一句,作类型转换
    Sleep(1000);
    }
    }