初学VC,自己写小工具用。
这个工具是想下载域名列表里的域名首页并显示到listview上。
不知道为什么,仿照着书上添加了OnGetdispinfo后运行总是崩溃。
希望高手帮忙调试下,谢谢啦。源码在下面的连接上。
http://blog.mtian.cn/wp-content/uploads/2009/04/downloadlist.rar

解决方案 »

  1.   


    LONG CDownloadListView::OnThreadShowContent (WPARAM wParam, LPARAM lParam)
    {
    THREADOUTPARMS* ptp = (THREADOUTPARMS*) wParam;
    // Add the item to the list view.
    //
    LV_ITEM lvi;
        lvi.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM; 
        lvi.iItem = nDomainCount;
        lvi.iSubItem = 0; 
        lvi.iImage = 0;
        lvi.pszText = LPSTR_TEXTCALLBACK; 
        lvi.lParam = (LPARAM) ptp;    if (GetListCtrl ().InsertItem (&lvi) == -1)
            return FALSE;
    nDomainCount ++;    return 0; };
    void CDownloadListView::OnGetdispinfo(NMHDR* pNMHDR, LRESULT* pResult) 
    { LV_DISPINFO* pDispInfo = (LV_DISPINFO*) pNMHDR;    if (pDispInfo->item.mask & LVIF_TEXT) {
            THREADOUTPARMS* pItem = (THREADOUTPARMS*) pDispInfo->item.lParam;        switch (pDispInfo->item.iSubItem) {        case 0: // Domain
                ::lstrcpy (pDispInfo->item.pszText, pItem->strDomain);
                break;
     
             case 1: // Domain content
                 ::lstrcpy (pDispInfo->item.pszText, pItem->strContent);
                 break;
    }
    }
     
     
    *pResult = 0;
    }typedef struct tagTHREADOUTPARMS {
        CString strDomain;
    CString strContent;
    } THREADOUTPARMS;
      

  2.   

    LV_DISPINFO这个结构体好像只有Window CE里有的吧
      

  3.   

    windows里面也有的。
    MFC程序设计里面的那个例子就用了。
      

  4.   

     ::lstrcpy (pDispInfo->item.pszText, pItem->strContent);已解决,拷贝的字符串过长导致的崩溃。