Selecting and deselecting a range of rows


The list box control class has a selection function SelItemRange(). This function, though missing in the CListCtrl class, is easily implemented.
// SelItemRange - Selects/Deselect a range of items
// Returns              - The number of new items selected
// bSelect              - TRUE to select, FALSE to deselect
// nFirstItem           - index of first item to select
// nLastItem            - index of last item to select
int CMyListCtrl::SelItemRange(BOOL bSelect, int nFirstItem, int nLastItem)
{
        // make sure nFirstItem and nLastItem are valid
        if( nFirstItem >= GetItemCount() || nLastItem >= GetItemCount() )
                return 0;

        int nItemsSelected = 0;
        int nFlags = bSelect ? 0 : LVNI_SELECTED;
        int nItem = nFirstItem - 1;
        while( (nItem = GetNextItem( nItem, nFlags )) >=0
                        && nItem <= nLastItem )
        {
                nItemsSelected++;
                SetItemState(nItem, bSelect ? LVIS_SELECTED : 0, LVIS_SELECTED );
        }
        return nItemsSelected;
}



Comments

  • Selecting all items quickly

    Posted by Legacy on 05/13/1999 12:00am

    Originally posted by: Phil Hall

    This will select all items the quickest way possible:
    
    


    void CMyListCtrl::SelectAllItems()
    {
    LV_ITEM theItem;

    theItem.mask = LVIF_STATE;
    theItem.iItem = -1;
    theItem.iSubItem = 0;
    theItem.state = LVIS_SELECTED;
    theItem.stateMask = 2;

    this->SetItemState(-1, &theItem);

    return;
    }

    Reply
  • Selecting multiple rows in a List control

    Posted by Legacy on 02/05/1999 12:00am

    Originally posted by: Kammie Dill

    I have a list control with over 100,000 items in it. I would like for the user of the app to be able to select all the items at once. I have provided a button on the toolbar for this, but the only way I know how to select all of the items is by looping through all 100,000 and setting the "select" state. This takes a long time and the screen flashes until all are selected. Is there a better way to do this?

    Reply
Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Despite the popularity of cloud software, many companies are reluctant to move their contact centers to the cloud. This white paper breaks down cloud architecture, the benefits of cloud and the difference between cloud and on-premise systems. It's a helpful resource for companies who are curious about cloud contact center software but have reservations. It offers practical explanations, extensive research and a guide to selecting the right cloud contact center vendor.

  • On-demand Event Event Date: May 16, 2017 Developers who use popular JavaScript frameworks like React to build user interfaces often have to create components to build the interface. Building components is time consuming, has integration and maintenance risks, and worst of all, distracts them from the task at hand — actually building the app. Watch this webinar to see how to quickly and easily add more than 115 professionally supported and tested components from Sencha to your React apps. In this …

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date