| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > ???????CTreeCtrl?????????? |
| Автор: Satana_Claus 25.8.2004, 15:14 |
| В элементе управления CTreeCtrl выделенным (selected) считается элемент, на котором произведен щелчек левой кнопкой мыши. Если щелкнуть правой то рисует выделение на новом элементе, но фактически выделенным остается предыдущий элемент(т.е. функция GetSelectedItem возвращает идентификатор элемента, который был выбран последним пр помощи ЛЕВОЙ кнопки мыши). Как сделать, чтоб выделение работало одинаково как левой так и ПРАВОЙ кнопкой мыши?????????????? |
| Автор: Олег М 25.8.2004, 15:22 |
| Устанавливай этот элемент выделенным по WM_RBUTTONDOWN |
| Автор: Satana_Claus 25.8.2004, 15:33 |
| Я имел в виду элемнт дерева, а не сам контрол. Как я могу выделить элемент дерева, если я не могу понять на каком элемент был произведен щелчек правой кнопкой. Я сделал контрол CMyTree производный от CTreeCtrl и перопределил обработчик: void CMyTree::OnRButtonDown(UINT nFlags, CPoint point) { CTreeCtrl::OnLButtonDown(nFlags, point); } это ничего не дало. Правый щелчок остался правым, хотя вызываю OnLButtonDown |
| Автор: Олег М 25.8.2004, 15:56 | ||||||
Я тоже.
Молодец! Только немного не так
Наверное даже будет работать |
| Автор: Satana_Claus 25.8.2004, 16:17 |
| Tnx. Все работает!:-) |
| Автор: Satana_Claus 25.8.2004, 16:42 |
| Теперь проблема с DropDown(CComboBox) контролом. Перехватил все какие у него есть сообщения: ON_CBN_EDITCHANGE(IDC_TYPE, OnCbnEditchangeType) ON_CBN_SELCHANGE(IDC_TYPE, OnCbnSelchangeType) ON_CBN_CLOSEUP(IDC_TYPE, OnCbnCloseupType) ON_CBN_KILLFOCUS(IDC_TYPE, OnCbnKillfocusType) ON_CBN_SELENDOK(IDC_TYPE, OnCbnSelendokType) В них пытаюсь получить текущую строку CString str; GetDlgItem(IDC_TYPE)->GetWindowText(str); MessageBox(str); Выводит то, что я выбирал прошлый раз. Текущий текст, который я вижу на кране, получить не могу. Где тут собака порылась? |
| Автор: Олег М 25.8.2004, 16:47 | ||
Собака порылась в МСДНе. И ты там поищи. В частности, я так понимаю, тебе надо CComboBoх::GetLBText |
| Автор: Satana_Claus 25.8.2004, 16:53 |
| Контрол не DropDownList, а DropDown. Т.е. есть список, но можно редактировать текст. И мне нужно получить именно тот текст, которыя я вижу в окне редактирования (список уже свернут). А GetLBText дает строку из выпадающего списка по индексу. Но в моем случае может отображаться строка, которой в списке нет (введена с клавы). |
| Автор: Олег М 25.8.2004, 17:04 | ||
Ну тогда должно работать
Покажи код, где ты это вызываешь. И вообще, когда тебе это нужнол вызывать. |
| Автор: Satana_Claus 25.8.2004, 17:16 |
| Все, догнал. Я определяю введен ли текст из списка if(combo->GetCurSel()!=CB_ERR) combo->GetLBText(combo->GetCurSel(),str); else combo->GetWindowText(str); Спасибо за внимание!:-) |