![]() |
|
|
![]()
|
|
| tonchitos |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 24.2.2007 Репутация: 1 Всего: 40 |
в общем дело так...есть у меня дерево CTreeCtrl на виде, наследованном от сформвью...
есть у мя контекстное меню...при выборе пункта контекстного меню...выделяется с кокой-то стати узел дерева какой-то, а чаще первый... обработчик нажатия на пункт меню - пустой совсем...стала отлаживать...портится внутри где-то мфсшного кода...из моего обработчика все нормально выходит... BEGIN_MESSAGE_MAP(CreadMDLView, CFormView) ON_NOTIFY(TVN_BEGINLABELEDIT, IDC_TREE1, &CreadMDLView::OnTvnBeginlabeleditTree1) ON_NOTIFY(TVN_ENDLABELEDIT, IDC_TREE1, &CreadMDLView::OnTvnEndlabeleditTree1) ON_NOTIFY(NM_RCLICK, IDC_TREE1, &CreadMDLView::OnNMRclickTree1) // появление меню при нажатии... ON_COMMAND(ID_BACK, &CreadMDLView::OnBackClick) ON_COMMAND(ID_NEXT, &CreadMDLView::OnNextClick) ON_COMMAND(ID_PROPERTIES, &CreadMDLView::viewProperties) // обработка выбора пункта меню.. // ON_NOTIFY(TVN_SELCHANGED, IDC_TREE1, &CreadMDLView::OnTvnSelchangedTree1) ON_NOTIFY(NM_DBLCLK, IDC_TREE1, &CreadMDLView::OnNMDblclkTree1) // ON_WM_SIZE() ON_WM_MOVING() END_MESSAGE_MAP()
Вот фигли при выходе из viewProperties() и путешествия по коду мфс портится выделенный айтем...в смысле другой выделяецо... -------------------- – Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил. |
||||
|
|||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Во-первых, вывод контекстного меню повесь на WM_CONTEXTMENU
А во-вторых, уточни: если ты закомментируешь вторую красную строчку (c voewProperties) , то все нормально работает? -------------------- ... |
|||
|
||||
| tonchitos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 24.2.2007 Репутация: 1 Всего: 40 |
ну если нет обработчика, то соответственно нажатия не присходит, то соответственно все нормально
-------------------- – Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил. |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Какого нажатия? Где там у тебя нажатие? Имеещь в виду, что пункт меню задизэбден и нажать нельзя?
Ну так поставь временно UPDATE с Enable (true) - нужно проверить... И еще... этот пункт, который выделяется, визуально совпадает со строкой меню? Добавлено через 1 минуту и 55 секунд И вызов меню все-таки перевесь... -------------------- ... |
|||
|
||||
| tonchitos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 24.2.2007 Репутация: 1 Всего: 40 |
если так
m_PopupMenu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON, point.x, point.y, this); то и без обработчика доступно и все равно выделяет какой то айтем левый... Добавлено через 14 минут и 17 секунд в общем так.. сделала с вмконтекстменю... тот обработчик убрала и обработку правого клика тоже... теперь так...до клика на пункт меню портится выделение... -------------------- – Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил. |
|||
|
||||
| tonchitos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 24.2.2007 Репутация: 1 Всего: 40 |
при входе в
void CreadMDLView::OnContextMenu(CWnd *pWnd, CPoint pos) все нормально а вот после этой строчки...все плехо m_PopupMenu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON, point.x, point.y, AfxGetMainWnd()); -------------------- – Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил. |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Странно все как-то... какая-то грязь...
Попробуй поймать это изменение: сделай обработчик LVN_ITEMCHANGED (или CHANGING), поставь точку прерывания на условие изменения состояния и попробуй посмотреть по стеку, откуда ноги растут:
-------------------- ... |
|||
|
||||
| tonchitos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 24.2.2007 Репутация: 1 Всего: 40 |
фууух, е мое...на самом деле после того как перевесила на ON_WM_CONTEXTMENU() все работать адеквтно стало...это просо я невнимательная... короче момент такой...если выделить левой кнопкой мыши айтем, и нажать на правую появится меню и все ок...
а если выделить правой кнопкой айтем дерева,то меню то вызывается, но выделение остается на старом пункте.. вот такая новая проблемка... -------------------- – Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил. |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
А правая кнопка выделение по-умолчанию не меняет. Хочешь менять - обрабатывай сама.
-------------------- ... |
|||
|
||||
| tonchitos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 24.2.2007 Репутация: 1 Всего: 40 |
да..так и сделала...хит тестом... в мсдне пример приведе даже для такого случая...
-------------------- – Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |