Поиск:

Ответ в темуСоздание новой темы Создание опроса
> меню на элементе 
:(
    Опции темы
EvgenyTS
Дата 28.1.2009, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Как можно создать контекстное меню на выделенном элементе CTreeCtrl. Также нужно получить доступ к этому элементу. Спасибо.
PM MAIL   Вверх
voov
Дата 28.1.2009, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Патамушта мы пилоты
**


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

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



В обработчике нажатия првой кнопки по дереву добавь код
Код

    CMenu menu;
    CMenu* pPopup = NULL;
    menu.LoadMenu(IDR_MENU_CONTEXT);
    pPopup = menu.GetSubMenu(0);

    // Определить на котором элементе осуществлен щелчок
    CPoint pt; 
    GetCursorPos(&pt);
    CPoint point(pt);
    m_tagTree.ScreenToClient(&point);
    UINT nFlags;
    HTREEITEM m_hitedItem = m_tagTree.HitTest(point, &nFlags);

    //Установить выделение на элементе
    m_tagTree.SelectItem(m_hitedItem);

    ASSERT(pPopup != NULL);

    pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, pt.x, pt.y, this);

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


Шустрый
*


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

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



а как можно сделать чтобы одно контесктное меню появлялось при клике на элементе дерева, а если клик на пустом месте дерева отображалось другое?
PM MAIL   Вверх
Earnest
Дата 28.1.2009, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

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



Предварительно спроси где курсор (hitTest); в зависимости от результата загрузи разные меню.


--------------------
...
PM   Вверх
EvgenyTS
Дата 28.1.2009, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Earnest, а если можно на примере
PM MAIL   Вверх
voov
Дата 28.1.2009, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Патамушта мы пилоты
**


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

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



EvgenyTS, спросил бы сразу, я кусок кода выкинул smile

Код

    //Установить выделение на элементе
    m_tagTree.SelectItem(m_hitedItem);

    if (m_hitedItem == NULL) {
                        pPopup = menu.GetSubMenu(0);    // пустое место
    } else if (!(nFlags & TVHT_ONITEM)) {
        // можно еще анализировать nFlags, см. мсдн по HitTest
    } else {
                        pPopup = menu.GetSubMenu(1);    // итем дерева
    }

    ASSERT(pPopup != NULL);

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


Шустрый
*


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

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



что значит GetSubMenu(0) и GetSubMenu(1)?
 smile Спасибо, уже понял

Это сообщение отредактировал(а) EvgenyTS - 28.1.2009, 17:13
PM MAIL   Вверх
EvgenyTS
Дата 28.1.2009, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



на элементе появилось меню его, а как этот элемент использовать. Как к нему обращаться для любых действий?
PM MAIL   Вверх
voov
Дата 28.1.2009, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Патамушта мы пилоты
**


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

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



EvgenyTS, ну это тебе уже в мсдн читать про CTreeCtrl : GetSelectedItem, SelectItem и т.д. и т.п. 
Кто ж его знает, как тебе этот элемент использовать, кроме тебя?
PM MAIL   Вверх
EvgenyTS
Дата 28.1.2009, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



 smile 
разобрался
Спасибо

Это сообщение отредактировал(а) EvgenyTS - 28.1.2009, 18:22
PM MAIL   Вверх
EvgenyTS
Дата 29.1.2009, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



спасибо

Это сообщение отредактировал(а) EvgenyTS - 29.1.2009, 15:26
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




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


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

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