Поиск:

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


Опытный
**


Профиль
Группа: Участник
Сообщений: 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()


Код


void CreadMDLView::OnNMRclickTree1(NMHDR *pNMHDR, LRESULT *pResult)
{
    CPoint point;
        GetCursorPos(&point);
        m_PopupMenu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON, point.x, point.y, AfxGetMainWnd());
    // TODO: Add your control notification handler code here
    *pResult = 0;
}


Код

void CreadMDLView::viewProperties()
{
}


Вот фигли при выходе из viewProperties() и путешествия по коду мфс портится выделенный айтем...в смысле другой выделяецо...


--------------------
– Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил.
PM MAIL   Вверх
Earnest
Дата 12.5.2008, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Во-первых, вывод контекстного меню повесь на WM_CONTEXTMENU
А во-вторых, уточни: если ты закомментируешь вторую красную строчку (c voewProperties) , то все нормально работает?


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


Опытный
**


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

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



ну если нет обработчика, то соответственно нажатия не присходит, то соответственно все нормально


--------------------
– Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил.
PM MAIL   Вверх
Earnest
Дата 12.5.2008, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Какого нажатия? Где там у тебя нажатие? Имеещь в виду, что пункт меню задизэбден и нажать нельзя?
Ну так поставь временно UPDATE с Enable (true) - нужно проверить... И еще... этот пункт, который выделяется, визуально совпадает со строкой меню?

Добавлено через 1 минуту и 55 секунд
И вызов меню все-таки перевесь...


--------------------
...
PM   Вверх
tonchitos
Дата 12.5.2008, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



если так

 m_PopupMenu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON, point.x, point.y, this);
то и без обработчика доступно и все равно выделяет какой то айтем левый...

Добавлено через 14 минут и 17 секунд
в  общем так.. сделала с вмконтекстменю...

тот обработчик убрала и обработку правого клика тоже...

теперь так...до клика на пункт меню портится выделение...


--------------------
– Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил.
PM MAIL   Вверх
tonchitos
Дата 12.5.2008, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 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());



--------------------
– Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил.
PM MAIL   Вверх
Earnest
Дата 13.5.2008, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Странно все как-то... какая-то грязь...
Попробуй поймать это изменение: сделай обработчик LVN_ITEMCHANGED (или CHANGING), поставь точку прерывания на условие изменения состояния и попробуй посмотреть по стеку, откуда ноги растут:
Код

void CMyWnd::OnItemChanging (NMHDR* pNMHDR, LRESULT*)
{
    NMLISTVIEW* pnmlv = (NMLISTVIEW*)pNMHDR;
    if (pnmlv->uChanged & LVIF_STATE)
    {
        UINT change = pnmlv->uOldState ^ pnmlv->uNewState;
        if (change & LVIS_SELECTED)
                                {
                                   int rrr = 5;   // вот сюда точу прервания
                                }
                 }
}




--------------------
...
PM   Вверх
tonchitos
Дата 13.5.2008, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



фууух, е мое...на самом деле после того как перевесила на ON_WM_CONTEXTMENU()  все работать адеквтно стало...это просо я невнимательная... короче момент такой...если выделить левой кнопкой мыши айтем, и нажать на правую появится меню и все ок...

а если выделить правой кнопкой айтем дерева,то меню то вызывается, но выделение остается на старом пункте.. вот такая новая проблемка...


--------------------
– Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил.
PM MAIL   Вверх
Earnest
Дата 14.5.2008, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



А правая кнопка выделение по-умолчанию не меняет. Хочешь менять - обрабатывай сама.



--------------------
...
PM   Вверх
tonchitos
Дата 15.5.2008, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



да..так и сделала...хит тестом... в мсдне пример приведе даже для такого случая...


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


 




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


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

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