Environment:
VC++ 6
Derived classes
from CTreeCtrl and
CListCtrl with
drop down list of
choices for items text (combo box)
Derived classes from
CListCtrl and
CTreeCtrl allows user to
open a list of choices for item's text. Double click or F4
keyboard button on item opens pre created list of strings.
Useful when it's necessary to create a visual
editable protocol trees
and lists of fields (values must be one of the values from
dropdown list, or may be entered by user).
It's very simple to
use. Just follow steps below.
1.
Create a new
control by
VC++ resource
editor and specify a variable of CTreeCtrlEx (CListCtrlEx)
type for that control or use Create() functions for dynamic
creation of that controls.
2. Use
InsertItemWithComboBox() function to insert a
new item into control.
3. Use
InsertComboBoxString() function to insert a new entry for
item's combo box. Item
must already created by InsertItemWithComboBox() function.
4. Use
SetComboDroppedHeight() function to specify height for
drop down combo box. Can
be used at runtime. (No multithreading support and will not
effect on any already visible combo
boxes).
5. Use
SetComboMinMaxWidths() function to specify minimum and
maximum widths for all combo boxes
in control.
Can be used at runtime. (No multithreading support and will
not effect on any already visible
combo boxes).
Here is the partial
interface for CListCtrlEx class (interface for CTreeCtrlEx
is almost the same):
class EXCTRLSDDLEXP CListCtrlEx : public CListCtrl
{
typedef CMap< int, int, CWnd*, CWnd* > mapItemToCB;
. . .
. . .
. . .
public:
void SetComboDroppedHeight( int iNewHeight );
void SetComboMinMaxWidths( UINT iNewMinWidth = 150,
UINT iNewMaxWidth = UINT_MAX );
int InsertItemWithComboBox( LPCTSTR lpszItem,
BOOL bEditableCombo );
void RemoveComboBox( int nItemRemoveFrom );
void RemoveAllComboBoxes();
int InsertComboBoxString( int nItemInsertTo,
LPCTSTR lpszItem,
int iIndex = -1 );
BOOL DeleteItem( int nItem );
BOOL DeleteAllItems();
. . .
. . .
. . .
};
Downloads
Download
sources and demo project - 18,664 bytes