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

  • Live Event Date: November 20, 2014 @ 2:00 p.m. ET / 11:00 a.m. PT Are you wanting to target two or more platforms such as iOS, Android, and/or Windows? You are not alone. 90% of enterprises today are targeting two or more platforms. Attend this eSeminar to discover how mobile app developers can rely on one IDE to create applications across platforms and approaches (web, native, and/or hybrid), saving time, money, and effort and introducing apps to market faster. You'll learn the trade-offs for gaining long …

  • Live Event Date: October 29, 2014 @ 11:00 a.m. ET / 8:00 a.m. PT Are you interested in building a cognitive application using the power of IBM Watson? Need a platform that provides speed and ease for rapidly deploying this application? Join Chris Madison, Watson Solution Architect, as he walks through the process of building a Watson powered application on IBM Bluemix. Chris will talk about the new Watson Services just released on IBM bluemix, but more importantly he will do a step by step cognitive …

Most Popular Programming Stories

More for Developers

Latest Developer Headlines

RSS Feeds