Отображение форматированного текста при выборе элемента в выпадающем списке
Ноль вниз голосовать
любимый
У меня есть combobox, в котором я хочу отобразить другую строку при выборе элемента в Combo.
Мое поле со списком - это выпадающий список.
Например: у меня есть следующее В моем combobox.
Алекс-Менеджер
Rain-Руководитель Проекта
Шини-Инженер
Мира-Старший Инженер
При выборе элемента в combobox я хочу использовать только имя, то есть Alex.
Я могу выполнить свое требование OnComboSelChange () и событие клавиш со стрелками, но при нажатии клавиши enter после использования клавиш со стрелками в поле со списком он не показывает форматированный текст в поле со списком.
Что я уже пробовал:
struct details{ CString name; CString des; }; BOOL CComboTestDlg::OnInitDialog() { CDialog::OnInitDialog(); details d1; d1.name = _T("alex"); d1.des =_T("manager"); m_vec.push_back(d1); details d2; d2.name = _T("Rain"); d2.des =_T("Engineer"); m_vec.push_back(d2); // TODO: Add extra initialization here for(int i=0;i<m_vec.size();i++) { m_ctrlCombo.AddString(m_vec[i].name+m_vec[i].des); m_ctrlCombo.SetItemData(i,(DWORD_PTR)&m_vec[i]); } m_ctrlCombo.SelectString(-1,m_vec[0].name); m_ctrlCombo.SetWindowText(m_vec[0].name); return TRUE; // return TRUE unless you set the focus to a control } void CComboTestDlg::OnCbnSelchangeCombo1() { int nItem = m_ctrlCombo.GetCurSel(); details* det = (details*)m_ctrlCombo.GetItemData(nItem); PostMessage(SETCOMBOTEXT,IDC_COMBO1,(LPARAM)(LPCTSTR)det->name); } BOOL CComboTestDlg::PreTranslateMessage(MSG* pMsg) { MSG msg1=*pMsg;//I am loosing the value after checking ..so storing temp. MSG msg; CopyMemory(&msg, pMsg, sizeof(MSG)); HWND hWndParent = ::GetParent(msg.hwnd); while (hWndParent && hWndParent != this->m_hWnd) { msg.hwnd = hWndParent; hWndParent = ::GetParent(hWndParent); } if (pMsg->message==SETCOMBOTEXT && (pMsg->wParam == IDC_COMBO1)) SetDlgItemText(IDC_COMBO1, (LPCTSTR)pMsg->lParam); if(pMsg->message==WM_KEYDOWN) { if(pMsg->wParam==VK_RETURN && msg.hwnd ==m_ctrlCombo.m_hWnd ) { OnCbnSelchangeCombo1(); } } return CDialog::PreTranslateMessage(pMsg); }