我在对话框类中用
CListBox *pListBox=static_cast<CListBox*>(GetDlgItem(IDC_LIST2));
pListBox->AddString(_T("Server thread entered"));
语句可以顺利添加。
但是在外部定义的函数或是线程中,编译不通过,显示
error C2660: 'GetDlgItem' : function does not take 1 arguments请问该如何解决?

解决方案 »

  1.   

    http://topic.csdn.net/t/20051119/08/4403999.html
      

  2.   


    是直接在GetDlgItem前面加::吗?还是不行啊
      

  3.   

    先找到对话框指针才能这么用啊CXXDlg *pDlg = (CXXDlg *)AfxGetApp()->m_pMainWnd;pDlg->GetDlgItem(IDC_LISTBOX)->AddString(_T("abc"));
      

  4.   


    尝试这样之后编译器仍然报错:
     error C2039: 'AddString' : is not a member of 'CWnd'
      

  5.   

    (pDlg->GetDlgItem(IDC_LISTBOX))->AddString(_T"aa");
    试试
      

  6.   

    还有一种方法,保存对话框的hwnd,然后让线程给主界面发送消息,在对话框中处理。
      

  7.   

    CXXDlg *pDlg = (CXXDlg *)AfxGetApp()->m_pMainWnd; pDlg->GetDlgItem(IDC_LISTBOX)->AddString(_T("abc"));
      

  8.   

    CListBox * pLB = (CListBox *)::GetDlgItem(hDlg, IDC_LIST2);
    pLB->AddString(_T("Server thread entered")); 但最好如7楼所说方法,不要在线程里直接更新界面