pListCtrl = (CListCtrl *) pWnd->GetDlgItem(IDC_IPLIST);
这句出错???
可能你传的pWnd是一个临时变量

解决方案 »

  1.   

    试试这样DWORD WINAPI ListenThreadProc(HWND hwnd)
    {
    CWnd* pWnd = CWnd::FromHandlePermanent(hwnd);
    if( pWnd)
    {
    CListCtrl* pListCtrl;
    pListCtrl = (CListCtrl *) pWnd->GetDlgItem(IDC_IPLIST);
    ...
      

  2.   

    CListCtrl* pListCtrl = (CListCtrl*)CWnd::GetDlgItem(IDC_IPLIST);
      

  3.   

    to strip(阿飞):
    如果这样的,那么传进来的参数是什么啊
      

  4.   

    看看msdn关于CListCtrl的帮助
      

  5.   

    传进来的参数 不能是CWnd*, 要传对话框的的HANDLE.(用GetSafeHwnd得到)
    然后再线程内再Attach 成 那个对话框地CWnd*,  就行了,
    因为 线程间传递MFC类 是需要这样的!!!
      

  6.   

    但是我的对话框成员变量是放在视图中的
    在文档中怎样才可以访问从而得到呢对话框的的HANDLE呢
      

  7.   

    LV_COLUMN lvm;
    lvm.mask=LV_FMT|LV_SUBITEM|LV_TEXT|LV_WIDTH;
    lvm.fmt=LVFMT_LEFT;//OR ELSE
    lvm.pzsText="your name";//maybe the pzsText is not right
    lvm.cx=120;
    lvm.isubitem=0;
    m_ctrllist.insertcolum(0,&lvm);
    //to do: add your other code here
      

  8.   

    我改了以后:
    DWORD WINAPI ListenThreadProc(HWND hWnd)
    {
    ...
    ...
    CWnd* pWnd  = ::AfxGetMainWnd();
    CListCtrl* pListCtrl;

    if(pWnd)
         pListCtrl = (CListCtrl *)pWnd->GetDlgItem(IDC_IPLIST);pListCtrl->InsertItem(1,"IP");
    pListCtrl->SetItemText(1,1,"IP");
    pListCtrl->SetItemText(1,2,"IP");
    pListCtrl->SetItemText(1,3,"IP");
    pListCtrl->SetItemText(1,4,"IP");
    pListCtrl->SetItemText(1,5,"IP");
    pListCtrl->SetItemText(1,6,"IP");


    }
    但是此时pListCtrl->InsertItem语句出错
    大家帮忙分析一下啊
      

  9.   

    DWORD WINAPI ListenThreadProc(HWND hWnd)
    {
    ...
    ...
    CWnd* pWnd  = ::AfxGetMainWnd();
    CListCtrl* pListCtrl;

    if(pWnd)
         pListCtrl = (CListCtrl *)pWnd->GetDlgItem(IDC_IPLIST);pListCtrl->InsertItem(1,"IP");
    pListCtrl->SetItemText(1,1,"IP");
    pListCtrl->SetItemText(1,2,"IP");
    pListCtrl->SetItemText(1,3,"IP");
    pListCtrl->SetItemText(1,4,"IP");
    pListCtrl->SetItemText(1,5,"IP");
    pListCtrl->SetItemText(1,6,"IP");


    }
    但是此时pListCtrl->InsertItem语句出错
    大家帮忙分析一下啊 
    pListCtrl->InsertItem(1,"IP")改为:
    int nowItem=pListCtrl->InsertItem(0,"IP");
    pListCtrl->SetItemText(nowItem,1,"xxxx");
    pListCtrl->SetItemText(nowItem,2,"xxx");
    ..........
      

  10.   

    但是很奇怪的是,只要在线程以外用以上的语句都是对的
    一在线程内用的话,就提示我wincore.cpp第958行出错
      

  11.   

    你可能要在工作线程中作如下操作,比如在一个基于对话框(假设为CInitDlg)的程序,假设工作线程函数为SetMyIcon(LPVOID pParam);可写入如下代码:
        CInitDlg *pDlg=(CInitDlg*)pParam;
    接下来就可利用pDlg在工作线程函数中进行各控件操作,在基于对话框的程序中这种方法是行得通的,你可试试看.