powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / CTreeCtrl
10 сообщений из 10, страница 1 из 1
CTreeCtrl
    #32360102
DJStealth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как к дереву привязать контекстное меню по правой кнопке мышы
--
...
Рейтинг: 0 / 0
CTreeCtrl
    #32360118
Ой Вэй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мыши

Перекрыть CTreeView::OnRButtonUp(), и вызвать там CTreeCtrl::HitTest(), а потом в зависимости от результатов TrackPopupMenu().
...
Рейтинг: 0 / 0
CTreeCtrl
    #32360126
DJStealth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
Перекрыть CTreeView::OnRButtonUp(),

Это я сделал
Код: plaintext
 вызвать там CTreeCtrl::HitTest(), а потом в зависимости от результатов TrackPopupMenu().

а здесь не доходит
--
...
Рейтинг: 0 / 0
CTreeCtrl
    #32360605
Ой Вэй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извини, до тебя не доходит или в функцию не доходит?

HitTest() возвращает идентификатор пункта дерева, на котором был сделан клик (точнее, пункта, который лежит под указанной точкой, но эту точку предоставляет OnRButtonUp()).

TrackPopupMenu() — глобальная функция, которая высвечивает всплывающее меню. Из этого меню потом в окно приходит команда.

Я готов объяснить ещё подробнее, если ты скажешь, что именно объяснять.
...
Рейтинг: 0 / 0
CTreeCtrl
    #32360639
Tracer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПерекрыть CTreeView::OnRButtonUp(),
Вообще-то есть специальное сообщение WM_CONTEXTMENU
...
Рейтинг: 0 / 0
CTreeCtrl
    #32360655
Ой Вэй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tracer
В общем ты прав. Когда я это делал (маленький был) не понял разницы.
А работает и так и так.
...
Рейтинг: 0 / 0
CTreeCtrl
    #32360674
DJStealth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При вызове: TrackPopupMenu()
Вылетает, нафиг.
Я по этому и спросил
--
...
Рейтинг: 0 / 0
CTreeCtrl
    #32360834
DJStealth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Во хрень таки заработало

Но теперь другой глюк, как убрать горизонтальную прокрутку, т.е. чтобы дерево не передергивало, а то когда уходишь в глубь само дерево как-бы смещается внутри окна, а мне этого не надо

--
...
Рейтинг: 0 / 0
CTreeCtrl
    #32360836
Ой Вэй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так бы сразу и сказал.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
void CMyTreeView::OnRButtonUp(UINT nFlags, CPoint point)
{
    ClientToScreen(&point); //из оконных в экранные

    CMenu mmenu;
    mmenu.LoadMenu(IDM_MENU);
    nMenu =  0 ; //а если разные меню для разных пунктов дерева, то ...
    CMenu* pContextMenu = mmenu.GetSubMenu(nMenu);
    pContextMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON,point.x+ 1 ,point.y+ 1 ,m_Parent);
}
...
Рейтинг: 0 / 0
CTreeCtrl
    #32361338
Ой Вэй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашёл самый простой вариант про скроллинг:
в OnInitDialog()
m_Tree.EnableScrollBarCtrl(SB_HORZ,false);
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / CTreeCtrl
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]