CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 2 of 2
  1. #1
    Join Date
    May 1999
    Posts
    2

    How to store data with items in a virtual listview?

    How to store data with items in a virtual listview while processing LVN_GETDISPINFO message? foolowing code doesn't work.


    void CWAVListView::OnGetdispinfo(NMHDR* pNMHDR, LRESULT* pResult)
    {
    LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;
    // TODO: Add your control notification handler code here

    LV_ITEM* pItem = &(pDispInfo)->item;
    DWORD dwIdx = pItem->iItem;
    LCID nLocaleID = GetUserDefaultLCID();

    if (pItem->mask & LVIF_TEXT)
    {
    switch(pItem->iSubItem)
    {
    case 0: // fill the main text
    lstrcpy(pItem->pszText, pWaItem->m_csName);
    break;
    case 1: // item type
    lstrcpy(pItem->pszText, csItemType);
    break;

    case 2: // timestamp

    COleDateTime ModifiedDate( pWaItem->m_nYear,
    pWaItem->m_nMonth,
    pWaItem->m_nDay,
    pWaItem->m_nHour,
    pWaItem->m_nMinute,
    pWaItem->m_nSecond );

    lstrcpy(pItem->pszText, ModifiedDate.Format(0, nLocaleID));
    break;

    //default:
    //break;
    }//switch()
    }
    if(pItem->mask & LVIF_IMAGE)
    {
    pItem->iImage = icon;
    }
    //***NOTE: following code doesn't work, why? mask is never LVIF_PARAM !!
    if(pItem->mask & LVIF_PARAM)
    {
    pItem->lParam = pWaItem->m_nItemID;
    }

    *pResult = 0;
    }




  2. #2
    Join Date
    May 1999
    Location
    Canada
    Posts
    36

    Re: How to store data with items in a virtual listview?

    The reason OnGetdispinfo() does not have the mask with LVIF_PARAM set it that it is never needed to display. That information is set when you insert the the items into the CLsitCtrl regardless if you are useing OnGetdispinfo. This is useful if you alway sorting.


    m_MyListCtrl.DeleteAllItems();
    m_MyListCtrl.SetItemCount(total);
    memset(&lvi, 0, sizeof(lvi));
    lvi.mask = LVIF_TEXT | LVIF_PARAM;
    lvi.pszText = LPSTR_TEXTCALLBACK;
    lvi.iSubItem = 0;
    for(i=0; i<total; i++)
    {
    lvi.iItem = i;
    lvi.lParam = i;
    m_MyListCtrl.InsertItem(&lvi);
    }






Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  





Click Here to Expand Forum to Full Width

Featured