在某个线程里我想为LISTbox添加线程!结果如下
方法一 m_list1.AddString("1");
报错:         left of '.AddString' must have class/struct/union type
方法二         (pParlPro->GetDlgItem(IDC_LIST1))->AddString("1");
报错:         'AddString' : is not a member of 'CWnd'
方法三 ((CComboBox *)GetDlgItem(IDC_COMBO_PARITY))->InsertString(0,"1");
报错:         'CWnd::GetDlgItem' : illegal call of non-static member function
               left of '->InsertString' must point to class/struct/union
我该怎么添加呢!?本人菜鸟,牛人莫笑!

解决方案 »

  1.   

    你在线程里没找到m_list1而已,解决方法,将线程做成窗口的静态函数,然后就可以在线程参数中传入窗口类了。
      

  2.   

    声明
    static DWORD __stdcall StatusThread( LPVOID lpparam );实现
    DWORD CMainFrame::StatusThread( LPVOID lpparam )
    {
    CMainFrame *pthis = ( CMainFrame * )lpparam;调用
    DWORD thread;
    threadid = ::CreateThread( NULL, 0, statusthread, this, 0, &thread );
      

  3.   

    我的线程是静态的
    static UINT ProDispThread(LPVOID pParam);//数据显示线程CMyDlg* pParlPro=(CMyDlg*)pParam;
    不过我没有类似你调用的代码。
    UINT的调用和双字节的一样吗?
      

  4.   

    就是在你的线程里没有找到m_list1
    ((Clistctrl *)pParlPro->GetDlgItem(IDC_LIST1))->AddString("1");
      

  5.   

    m_list1 是CListbox控件成员函数!我是不是还要加入CListbox?
      

  6.   

    我第三个方法代码贴错了!你说的这个就是我第三个方法!会爆两个错
    报错: 'CWnd::GetDlgItem' : illegal call of non-static member function
      left of '->InsertString' must point to class/struct/union
      

  7.   

    你一步一步的来吧先通过线程的参数取得dialog的指针。CMyDialog * pthis = ( CMyDialog * )lpparam;
      

  8.   

    IDC_LIST1不在你的这个线程内,先用指针指向它所在的对话框或者view,再->AddString("1")
      

  9.   


    试试这样:pParlPro->m_list1.InsertItem(0, "1");
      

  10.   

    头大了!线程里面处理真麻烦!我可以把数据传回主对话框然后再处理。不过通信这块我不是很熟!sendmessage需要主窗口句柄!不会饿,太菜了!怎么得到这个句柄?
      

  11.   

    将m_list1定义成全局变量,放在类外面  就ok了