CCombobox enhancement to help with Text and item data

Download Source Code


The purpose of TComboBox is to make life easier for programmers when dealing with comboboxes that need to store a string, integer, etc. value as the code for any given string that is displayed. The "code" that I am referring to is the item data of the combobox itself (see the SetItemData() member function of CComboBox).

For example:

	// Header file contains entry for the TComboBox member variable.
	CTCombobox myCombo;
	CString m_csCodeOneStr;

 

	// Implementation file contains initialization of the combobox
	// Standard combobox method:
	CMydialog::OnInitDialog()
	{
		...

		// Special note: We have to use a member CString object so that 
		// when the string goes out of scope (because the OnInitDialog() 
		// function ends), the code string will still exist.
		m_csCodeOneStr = "Code1";

		DWORD dwCode = &m_csCodeOneStr;
		int nComboEntry;
		nComboEntry = myCombo.AddString("Here's one");

		if (nComboEntry != CB_ERR)
			myCombo.SetItemData(nComboEntry, dwCode);

		...
	}
	// Implementation file contains initialization of the combobox
	// TComboBox method:
	CMydialog::OnInitDialog()
	{
		...

		MyCombo.AddEntry("Here's one", "Code1");

		...
	}

You can now use the GetCode() method of TComboBox to retrieve the code for any item (or the currently selected item). This is of course instead of having to typedef the DWORD parameter over into a CString.

For example:

	CString csCodeValue;
	myCombo.GetSelectedCode(csCodeValue);

or,

	myCombo.GetCode(0, csCodeValue);

Last updated: 26 July 1998