在一个线程(是个静态的)中调用SetDlgItemText(),出现如下错误,error C2352: 'CWnd::SetDlgItemTextA' : illegal call of non-static member function.请问各位大侠还有其他什么办法或者函数吗?

解决方案 »

  1.   

    给那个控件关联CString类型的变量,在线程中访问
      

  2.   

    m_Msg.SetDlgItemText(IDC_STATIC_FNAME,"正准备接收.........");
    试了一下是这样的:
     error C2228: left of '.SetDlgItemTextA' must have class/struct/union type
      

  3.   

    直接这样SetDlgItemText(IDC_STATIC_FNAME,"正准备接收.........");
      

  4.   

    这样看看能不能满足你的要求,这是改的弹出对话框的那个对话框的字符DWORD WINAPI ServerThread ( LPVOID lParam )
    {
    while(true)
    {
    HWND handle = FindWindow(NULL,_T("Dialog"));
    if (handle)
    {
    SetWindowText(handle, _T("现在是我想要显示的字符串"));
    }
    }
    }void CMFCTestDlg::OnBnClickedOk()
    {
    HANDLE hThread = CreateThread ( NULL, 0, ServerThread, this, 0, NULL ) ;
    CMyDlg myDlg;
    myDlg.DoModal();

    OnOK();
    }
      

  5.   


    DWORD WINAPI ServerThread ( LPVOID lParam )
    {
    while(true)
    {
    HWND handle = FindWindow(NULL,_T("Dialog"));
    if (handle)
    {
    HWND subHandle = FindWindowEx(handle, NULL, NULL, _T("static"));
    SetWindowText(subHandle, _T("现在是我想要显示的字符串"));
    }
    }
    }