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

  • "Security" is the number one issue holding business leaders back from the cloud. But does the reality match the perception? Keeping data close to home, on premises, makes business and IT leaders feel inherently more secure. But the truth is, cloud solutions can offer companies real, tangible security advantages. Before you assume that on-site is the only way to keep data safe, it's worth taking a comprehensive approach to evaluating risks. Doing so can lead to big benefits.

  • Live Event Date: August 20, 2014 @ 1:00 p.m. ET / 10:00 a.m. PT When you look at natural user interfaces as a developer, it isn't just fun and games. There are some very serious, real-world usage models of how things can help make the world a better place – things like Intel® RealSense™ technology. Check out this upcoming eSeminar and join the panel of experts, both from inside and outside of Intel, as they discuss how natural user interfaces will likely be getting adopted in a wide variety …

Most Popular Programming Stories

More for Developers

Latest Developer Headlines

RSS Feeds