windows-nt/Source/XPSP1/NT/admin/netui/common/h/bltlbsel.hxx
2020-09-26 16:20:57 +08:00

158 lines
4.5 KiB
C++

/**********************************************************************/
/** Microsoft Windows/NT **/
/** Copyright(c) Microsoft Corp., 1991 **/
/**********************************************************************/
/*
bltlbsel.hxx
Selections within listboxen - class definitions
FILE HISTORY:
beng 06-Aug-1991 Created
*/
#ifndef _BLT_HXX_
#error "Don't include this file directly; instead, include it through blt.hxx"
#endif // _BLT_HXX_
#ifndef _BLTLBSEL_HXX_
#define _BLTLBSEL_HXX_
#if 0 // DEAD
/******************************************************************
NAME: LB_SELECTION
SYNOPSIS: Represents the set of lines selected in a listbox.
INTERFACE:
LB_SELECTION() - given a listbox, builds the current selection
in that listbox.
Select() - adds an existing element (identified by index)
to the selection. I.e., selects the element.
This would be "Add" to a collection.
Unselect() - removes an existing selected element (id'd by
index) from the selection. I.e., deselects
the element. This would be "Remove" to a coll.
UnselectAll() - removes every element from the selection.
Listbox has no selection.
AddItem() - adds a new element to the listbox, and leaves
it selected. The difference between adding the
item here and adding it at the listbox is
that this selects the new item.
DeleteAllItems()- completely empties the listbox of every item
currently selected.
QueryCount() - return the number of items selected.
Redundant, given LISTBOX::QuerySelCount,
yet convenient.
PARENT: BASE
USES: BLT_LISTBOX, ITER_LB
CAVEATS:
At any time a listbox may have no more than one SELECTION
object in existence. More may lead to bad behavior, esp. if
each calls DeleteAllItems or some such.
NOTES:
Placing the SELECTION attributes in a separate class lets the
class allocate the (potentially large) set of selected records
only when needed.
The selection uses a "collection" metaphor, which is a bit
confusing when juxtaposed against AddItem and such which work
on the underlying collection of LBI*.
HISTORY:
beng 06-Aug-1991 Created
**********************************************************************/
DLL_CLASS LB_SELECTION: public BASE
{
friend LB_ITER;
private:
BLT_LISTBOX* _plb;
UINT _cilbSelected;
INT * _pilbSelected;
public:
LB_SELECTION( BLT_LISTBOX * );
UINT QueryCount() const;
VOID Select(INT)
VOID Unselect(INT);
VOID UnselectAll();
INT AddItem(const LBI*);
VOID DeleteAllItems();
};
/*************************************************************************
NAME: ITER_LB
SYNOPSIS: Step through the lines of a listbox
INTERFACE:
ITER_LB() - Construct the iterator. Can take either a listbox
proper, in which case it steps through every line,
or else a selection, in which case it steps through
only those lines selected.
Reset() - as usual for iterator
operator()
Next() - as usual for iterator, returning a LBI*.
UnselectThis() - unselects the *current* line (the one just returned
by Next). This will remove it from a selection.
DeleteThis()- deletes the *current* line from the listbox.
USES: LBI
CAVEATS:
The usual warnings apply about deleting items from a collection
which has outstanding iterators. UnselectThis and DeleteThis
are guaranteed safe on the current iterator, but no others.
NOTES:
HISTORY:
beng 06-Aug-1991 Created
**************************************************************************/
DLL_CLASS ITER_LB
{
public:
ITER_LB(const BLT_LISTBOX &);
ITER_LB(const LB_SELECTION &);
VOID Reset();
LBI* Next();
LBI* operator()() { return Next(); }
VOID UnselectThis();
VOID DeleteThis();
};
#endif // DEAD
#endif // _BLTLBSEL_HXX_ - end of file