Setting Object Data *double* For Class ComboBox :: MFC

kuphryn

Senior member
Jan 7, 2001
400
0
0
Hi.

I have a CComboBox object. I need to set one or more of its strings to represent a *double* data type. For example:

Code:
CComboBox mCbbCandy;

mCbbCandy.Create(WS_CHILD | WS_VISIBLE | WS_BORDER | LBS_NOTIFY | WS_VSCROLL | CBS_DROPDOWNLIST | CBS_SORT, CRect(CPoint(270, 10), CSize(100, 100)), this, IDC_CBB_FLAVORS);

// Setting its value
int i = mCbbCandy.AddString("X");
mCbbCandy.SetItemData(i, 1.99); // $1.99

// Retrieving its value

int i = mCbbCandy.GetCurSel();
double price = mCbbCandy.GetItemData(i);

-----

For some reason, the price does not come out right if I use the decimal point. For example, any whole number works, but not decimal. 

How do you set the item data to a double type? Visual C++ gave warnings about data loss because the CComboBox object expected a DWORD instead of a double.

Thanks,
Kuphryn
 

javathehut

Senior member
Oct 23, 2000
318
0
0
just insert the number as a string:

TCHAR szNumber[10] = {0};

wsprintf(szNumber, "%f", 1.99);
mCbbCandy.AddString(szNumber);

The function you were using SetItemData, is used to set a pointer for reference (kind of like the lparam in tree/list views) so its not at all meant to set the value of the combo box item. Hope that helps
 

Adrian Tung

Golden Member
Oct 10, 1999
1,370
1
0
javathehut's suggestion will work *unless* you want what the combo box to display to be different from the data that you retrieve from it. If so, you can do a little hack to get your data stored and retrieved properly:

Do a memcpy to copy your float to a DWORD variable, then use SetItemData to store your DWORD. When you need to retrieve the float, do the opposite - use GetItemData to get the DWORD, then memcpy it back to the float. Both DWORD and float are 4 bytes, so memcpy will work.


Hope that helps,
atwl


Edit:
Ignore my first suggestion, I just realized you want a double, not a float. A double is 8 bytes, so there's nothing that you can do except for javathehut's suggestion. Unless you use a pointer to a structure/array/list that stores your double, that is.
 
sale-70-410-exam    | Exam-200-125-pdf    | we-sale-70-410-exam    | hot-sale-70-410-exam    | Latest-exam-700-603-Dumps    | Dumps-98-363-exams-date    | Certs-200-125-date    | Dumps-300-075-exams-date    | hot-sale-book-C8010-726-book    | Hot-Sale-200-310-Exam    | Exam-Description-200-310-dumps?    | hot-sale-book-200-125-book    | Latest-Updated-300-209-Exam    | Dumps-210-260-exams-date    | Download-200-125-Exam-PDF    | Exam-Description-300-101-dumps    | Certs-300-101-date    | Hot-Sale-300-075-Exam    | Latest-exam-200-125-Dumps    | Exam-Description-200-125-dumps    | Latest-Updated-300-075-Exam    | hot-sale-book-210-260-book    | Dumps-200-901-exams-date    | Certs-200-901-date    | Latest-exam-1Z0-062-Dumps    | Hot-Sale-1Z0-062-Exam    | Certs-CSSLP-date    | 100%-Pass-70-383-Exams    | Latest-JN0-360-real-exam-questions    | 100%-Pass-4A0-100-Real-Exam-Questions    | Dumps-300-135-exams-date    | Passed-200-105-Tech-Exams    | Latest-Updated-200-310-Exam    | Download-300-070-Exam-PDF    | Hot-Sale-JN0-360-Exam    | 100%-Pass-JN0-360-Exams    | 100%-Pass-JN0-360-Real-Exam-Questions    | Dumps-JN0-360-exams-date    | Exam-Description-1Z0-876-dumps    | Latest-exam-1Z0-876-Dumps    | Dumps-HPE0-Y53-exams-date    | 2017-Latest-HPE0-Y53-Exam    | 100%-Pass-HPE0-Y53-Real-Exam-Questions    | Pass-4A0-100-Exam    | Latest-4A0-100-Questions    | Dumps-98-365-exams-date    | 2017-Latest-98-365-Exam    | 100%-Pass-VCS-254-Exams    | 2017-Latest-VCS-273-Exam    | Dumps-200-355-exams-date    | 2017-Latest-300-320-Exam    | Pass-300-101-Exam    | 100%-Pass-300-115-Exams    |
http://www.portvapes.co.uk/    | http://www.portvapes.co.uk/    |