Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ???????CTreeCtrl?????????? VisualC++ & MFC 
:(
    Опции темы
Satana_Claus
Дата 25.8.2004, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 18.8.2004

Репутация: нет
Всего: нет



В элементе управления CTreeCtrl выделенным (selected) считается элемент, на котором произведен щелчек левой кнопкой мыши. Если щелкнуть правой то рисует выделение на новом элементе, но фактически выделенным остается предыдущий элемент(т.е. функция GetSelectedItem возвращает идентификатор элемента, который был выбран последним пр помощи ЛЕВОЙ кнопки мыши).
Как сделать, чтоб выделение работало одинаково как левой так и ПРАВОЙ кнопкой мыши??????????????
PM MAIL   Вверх
Олег М
Дата 25.8.2004, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 10.6.2004
Где: Москва

Репутация: 7
Всего: 7



Устанавливай этот элемент выделенным по WM_RBUTTONDOWN

Это сообщение отредактировал(а) Олег М - 25.8.2004, 15:24
PM MAIL ICQ   Вверх
Satana_Claus
Дата 25.8.2004, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 18.8.2004

Репутация: нет
Всего: нет



Я имел в виду элемнт дерева, а не сам контрол.
Как я могу выделить элемент дерева, если я не могу понять на каком элемент был произведен щелчек правой кнопкой.
Я сделал контрол CMyTree производный от CTreeCtrl и перопределил обработчик:
void CMyTree::OnRButtonDown(UINT nFlags, CPoint point)
{
CTreeCtrl::OnLButtonDown(nFlags, point);
}
это ничего не дало. Правый щелчок остался правым, хотя вызываю OnLButtonDown
PM MAIL   Вверх
Олег М
Дата 25.8.2004, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 10.6.2004
Где: Москва

Репутация: 7
Всего: 7



Цитата(Satana_Claus @ 25.8.2004, 18:33)
Я имел в виду элемнт дерева, а не сам контрол.

Я тоже.
Цитата(Satana_Claus @ 25.8.2004, 18:33)
Я сделал контрол CMyTree производный от CTreeCtrl и перопределил обработчик:

Молодец! Только немного не так
Код

void CMyTree::OnRButtonDown(UINT nFlags, CPoint point)
{
HTREEITEM hItem=HitTest(point,NULL);
if (hItem) SelectItem(hItem);
}


Наверное даже будет работать
PM MAIL ICQ   Вверх
Satana_Claus
Дата 25.8.2004, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 18.8.2004

Репутация: нет
Всего: нет



Tnx.
Все работает!:-)
PM MAIL   Вверх
Satana_Claus
Дата 25.8.2004, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 18.8.2004

Репутация: нет
Всего: нет



Теперь проблема с 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);
Выводит то, что я выбирал прошлый раз. Текущий текст, который я вижу на кране, получить не могу.
Где тут собака порылась?
PM MAIL   Вверх
Олег М
Дата 25.8.2004, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 10.6.2004
Где: Москва

Репутация: 7
Всего: 7



Цитата(Satana_Claus @ 25.8.2004, 19:42)
Где тут собака порылась?

Собака порылась в МСДНе. И ты там поищи. В частности, я так понимаю, тебе надо CComboBoх::GetLBText
PM MAIL ICQ   Вверх
Satana_Claus
Дата 25.8.2004, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 18.8.2004

Репутация: нет
Всего: нет



Контрол не DropDownList, а DropDown. Т.е. есть список, но можно редактировать текст. И мне нужно получить именно тот текст, которыя я вижу в окне редактирования (список уже свернут).
А GetLBText дает строку из выпадающего списка по индексу. Но в моем случае может отображаться строка, которой в списке нет (введена с клавы).
PM MAIL   Вверх
Олег М
Дата 25.8.2004, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 10.6.2004
Где: Москва

Репутация: 7
Всего: 7



Ну тогда должно работать
Цитата(Satana_Claus @ 25.8.2004, 19:42)
GetDlgItem(IDC_TYPE)->GetWindowText(str);

Покажи код, где ты это вызываешь. И вообще, когда тебе это нужнол вызывать.

PM MAIL ICQ   Вверх
Satana_Claus
Дата 25.8.2004, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 18.8.2004

Репутация: нет
Всего: нет



Все, догнал.
Я определяю введен ли текст из списка
if(combo->GetCurSel()!=CB_ERR)
combo->GetLBText(combo->GetCurSel(),str);
else
combo->GetWindowText(str);

Спасибо за внимание!:-)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0700 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.