Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> LVN_COLUMNCLICK Notification, как его отловить? 
:(
    Опции темы
pseudor
Дата 5.6.2007, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Нубский вопрос...

В MSDN написано:

Цитата

This notification message is sent in the form of a WM_NOTIFY message.


Тогда ловим WM_NOTIFY. 
Как в обработчике понять, что именно от LVN_COLUMNCLICK этот WM_NOTIFY?
Можно пример кода?
И есть ли ещё варианты отловить нажатие на заголовок колонки?
Спасибо.
PM MAIL   Вверх
threef
Дата 5.6.2007, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 27.10.2005
Где: Запорожье

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



Это сообщение получает владелец LV. Именно как LVN_COLUMNCLICK
Код

void CListSortDlg::OnColumnclickList1(NMHDR* pNMHDR, LRESULT* pResult) 
{
    NM_LISTVIEW* p = (NM_LISTVIEW*)pNMHDR;
    // TODO: Add your control notification handler code here
    CString s;
//    s.Format("%d",p->iSubItem);
//    MessageBox("sort "+s);
    for(int i=0;i<table.GetItemCount();i++)
        table.SetItemData(i,i);
    table.SortItems(cmp,p->iSubItem);
    Invalidate();
    *pResult = 0;
}

Тут номер колонки определяет, в какой колонке сортируем
PM MAIL   Вверх
v2v
Дата 6.6.2007, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

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



в чистом вин апи, это выглядит следющим образом:
Код

case WM_NOTIFY:
{
 if ( ( ((LPNMHDR)lParam)->hwndFrom == hListViewHWND ) && ( ((LPNMHDR)lParam)->code == LVN_COLUMNCLICK  ) )
     {
     }
}

думаю тут ничего объяснять не надо...



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


Новичок



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

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



Всё таки есть вопрос, потому что я ещё не разобрался в этой кухне.
У меня нет WndProc, а в хэдэре задаётся маппинг:

Код

    BEGIN_MSG_MAP(thisClass)
        MESSAGE_HANDLER(WM_CREATE, OnCreate)
        MESSAGE_HANDLER(WM_DESTROY, OnDestroy)
        MESSAGE_HANDLER(CWM_INITIALIZE, OnInit)
        MESSAGE_HANDLER(WM_RBUTTONDOWN, OnNMRclickList)
        MESSAGE_HANDLER(WM_INITMENUPOPUP, OnInitMenuPopup)
        MESSAGE_HANDLER(WM_LBUTTONDBLCLK, OnLDblClick)
        MESSAGE_HANDLER(WM_LBUTTONUP, OnLClick)
        ...
        MESSAGE_HANDLER(WM_NOTIFY, OnWMNotify)
        ...
        CHAIN_MSG_MAP(baseClass)
        DEFAULT_REFLECTION_HANDLER()
    END_MSG_MAP()


Потом в OnWMNotify:

 
Код


LRESULT ZxView::OnWMNotify(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) //FIXME lib
{
    if ( ((LPNMHDR)lParam)->code == LVN_COLUMNCLICK  ) {
        bool isdesc = IsSortDescending();
        int nmb = GetSortColumn();

    }
    return 0;
}


Но при нажатии на колонку не изменяется маркер сортировки (маленький треугольник) и в if выполнение не заходит.


Это сообщение отредактировал(а) pseudor - 6.6.2007, 12:32
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

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


 




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


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

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