Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изменение размена колонки CListCtrl-a 
:(
    Опции темы
Antropoid
Дата 27.8.2006, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 786
Регистрация: 1.6.2006
Где: &Ukraine==Ode ssa

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



Как отловить, что пользователь начал изменение размена колонки CListCtrl-a?


--------------------
user posted image
Задыхаясь от восторга заниматься чепухой. 
PM MAIL   Вверх
PuLN
Дата 27.8.2006, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



HDN_ITEMCHANGING и HDN_ITEMCHANGED чтобы узнать о том что колонки изменяются и изменились соответственно.
вроде так.
--------------------
*** хуже нет,когда не ответит тот,кто знает....*** наша жизнь-желтая стрела,подхваченная ветром времени(© PuLN)   
PM MAIL   Вверх
Antropoid
Дата 27.8.2006, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 786
Регистрация: 1.6.2006
Где: &Ukraine==Ode ssa

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



Че-то не работает... smile 


--------------------
user posted image
Задыхаясь от восторга заниматься чепухой. 
PM MAIL   Вверх
Romikgy
Дата 27.8.2006, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



HDN_BEGINTRACK
Код

The HDN_BEGINTRACK notification message notifies a header control's parent window 
that the user has begun dragging a divider in the control (that is, the user has pressed 
the left mouse button while the mouse cursor is on a divider in the header control). 
This notification message is sent in the form of a WM_NOTIFY message. 


Добавлено @ 21:27 
также
HDN_TRACK 
HDN_ENDTRACK 


Это сообщение отредактировал(а) Romikgy - 27.8.2006, 21:25


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Antropoid
Дата 27.8.2006, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 786
Регистрация: 1.6.2006
Где: &Ukraine==Ode ssa

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



И так не выходит...в чем моя ошибка -->
Код

BOOL CMyListCtrl::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{
    NMHDR *pN = (NMHDR*)lParam;
  
    if (pN->code == HDN_BEGINTRACK)
    {
  // Обработка
    }
}

 smile 


--------------------
user posted image
Задыхаясь от восторга заниматься чепухой. 
PM MAIL   Вверх
Romikgy
Дата 27.8.2006, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Antropoid, слушай , ты хоть и из Одессы , но читать тоже нужно 
Цитата(Romikgy @  27.8.2006,  20:25 Найти цитируемый пост)
This notification message is sent in the form of a WM_NOTIFY message. 

о чем это говорит , да о том что мессага приходит в
Цитата(Romikgy @  27.8.2006,  20:25 Найти цитируемый пост)
 WM_NOTIFY message

где видно из твоего кода что ты ловишь это?

Добавлено @ 22:19 
Цитата(Antropoid @  27.8.2006,  20:54 Найти цитируемый пост)
CMyListCtrl::OnNotify

если это обработка нотифи(тогда звиняюсь , не силен я в этих заморочках да и вообще VC не люблю )
вот из хелпа
HDN_BEGINTRACK  
phdn = (HD_NOTIFY FAR *) lParam; 
Код

typedef struct _HD_NOTIFY {  // hdn  
    NMHDR         hdr;  
    int           iItem; 
    int           iButton; 
    HD_ITEM FAR*  pitem; 
} HD_NOTIFY; 


структура там другая!

Добавлено @ 22:24 
Код

HD_NOTIFY*pN = (HD_NOTIFY*)lParam;
    if (pN->hdr. code== HDN_BEGINTRACK)

вроде так


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

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


Опытный
**


Профиль
Группа: Участник
Сообщений: 786
Регистрация: 1.6.2006
Где: &Ukraine==Ode ssa

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



Цитата(Romikgy @  27.8.2006,  22:11 Найти цитируемый пост)
Цитата(Antropoid @  27.8.2006,  20:54 )
CMyListCtrl::OnNotify
если это обработка нотифи(тогда звиняюсь , не силен я в этих заморочках да и вообще VC не люблю )

Да это и есть обработка нотифая  smile 

Цитата(Romikgy @  27.8.2006,  22:11 Найти цитируемый пост)
HDN_BEGINTRACK  
phdn = (HD_NOTIFY FAR *) lParam; 

Цитата(Romikgy @  27.8.2006,  22:11 Найти цитируемый пост)
структура там другая! 


а на счет структуры:
Код

    HD_NOTIFY* phdn = (HD_NOTIFY FAR *) lParam;
    if(phdn->hdr.code == HDN_BEGINTRACK) 
    {
// Обработка
    }

что в лоб - что по-лбу  smile 


--------------------
user posted image
Задыхаясь от восторга заниматься чепухой. 
PM MAIL   Вверх
Damarus
Дата 27.8.2006, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 671
Регистрация: 6.5.2006

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



Цитата(Antropoid @  27.8.2006,  22:54 Найти цитируемый пост)
И так не выходит...в чем моя ошибка -->

Покажи весь код CMyListCtrl::OnNotify. Есть подозрение, что проверяешь ID контрола, пославшего HDN_BEGINTRACK.

Цитата(Romikgy @  27.8.2006,  23:11 Найти цитируемый пост)
phdn = (HD_NOTIFY FAR *) lParam; 
Код

typedef struct _HD_NOTIFY {  // hdn  
    NMHDR         hdr;  
    int           iItem; 
    int           iButton; 
    HD_ITEM FAR*  pitem; 
} HD_NOTIFY; 

структура там другая!

Тогда NMHEADER, а не HD_NOTIFY, но на этапе проверки кода сообщения это
Цитата(Antropoid @  28.8.2006,  00:00 Найти цитируемый пост)
что в лоб - что по-лбу


Добавлено @ 23:57 
Antropoid, а зачем OnNotify. Чем не походит
Код

BEGIN_MESSAGE_MAP(CAntropoidDlg, CDialog)
    ..................
    ON_NOTIFY(HDN_BEGINTRACK, 0, &CAntropoidDlg::OnBeginTrack)
    ON_NOTIFY(HDN_ENDTRACK, 0, &CAntropoidDlg::OnEndTrack)
    ..................
END_MESSAGE_MAP()

PM MAIL ICQ Jabber   Вверх
Earnest
Дата 28.8.2006, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Damarus, только нужно это дело не в диалог вставлять, а вCMy ListCtrl - это же его child.
И обработчик примерно такой:
Код

void CMyListCtrl::OnEndTrack (UINT, NMHDR* pNMHDR, LRESULT* pResult)
{
   NMHEADER* pHdr = (NMHEADER*)pNMHDR;
   ...
}



--------------------
...
PM   Вверх
Antropoid
Дата 28.8.2006, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 786
Регистрация: 1.6.2006
Где: &Ukraine==Ode ssa

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



С ума сойти! Ничего не получается! smile 
Цитата(Damarus @  27.8.2006,  23:54 Найти цитируемый пост)
Покажи весь код CMyListCtrl::OnNotify. Есть подозрение, 
что проверяешь ID контрола, пославшего HDN_BEGINTRACK.

Код

BOOL CMyListCtrl::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{
    NMHDR *pN = (NMHDR*)lParam;
  
    if (pN->code == HDN_BEGINTRACK)
    {
  // Обработка
    }
}

return CListCtrl::OnNotify(wParam, lParam, pResult);

Цитата(Damarus @  27.8.2006,  23:54 Найти цитируемый пост)
Antropoid, а зачем OnNotify. Чем не походит

Вообще-то я думал, что это одно и то же, но даже если
Код

BEGIN_MESSAGE_MAP(CMyListCtrl, CListCtrl)
..................
    ON_NOTIFY(HDN_BEGINTRACK, 0, OnBeginTrack)    
..................
END_MESSAGE_MAP()

void CMyListCtrl::OnBeginTrack (NMHDR* pNMHDR, LRESULT* pResult)
{
    if (pNMHDR->code == HDN_BEGINTRACK)//хотя это ни к чему, но все же...
    {
// Обработка
    }
}

то все равно
Цитата(Antropoid @  27.8.2006,  23:00 Найти цитируемый пост)
что в лоб - что по-лбу   smile  




--------------------
user posted image
Задыхаясь от восторга заниматься чепухой. 
PM MAIL   Вверх
Damarus
Дата 28.8.2006, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 671
Регистрация: 6.5.2006

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



Antropoid, вот тебе пример, сравнивай со своим кодом.

Присоединённый файл ( Кол-во скачиваний: 14 )
Присоединённый файл  Antropoid.zip 43,69 Kb
PM MAIL ICQ Jabber   Вверх
Antropoid
Дата 30.8.2006, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 786
Регистрация: 1.6.2006
Где: &Ukraine==Ode ssa

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



Damarus, твой проект моя студия не открыла(у меня 2003 smile ) А читая исходный код, я ничего нового не нашел,- обо всем этом мы говорили в топике,- чуда не произошло. Не уж-то, у тебя это работает? и реагирует на изменение ширины колонки?


--------------------
user posted image
Задыхаясь от восторга заниматься чепухой. 
PM MAIL   Вверх
Damarus
Дата 30.8.2006, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 671
Регистрация: 6.5.2006

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



Antropoid, да у меня работает. Там вроде exe должен быть, можешь сам проверить.

PS. Проект для VS2005.
PM MAIL ICQ Jabber   Вверх
Antropoid
Дата 30.8.2006, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 786
Регистрация: 1.6.2006
Где: &Ukraine==Ode ssa

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



Damarus,ехе пишет "Приложение не было запущено, поскольку оно не корректно настроено. Повторная установка приложения может решить данную проблему." А вообще - ты как-то странно написал и обработчик для события 
Код

    ON_NOTIFY(HDN_BEGINTRACK, 0, &CMyListCtrl::OnBeginTrack)
.........................
void CMyListCtrl::OnBeginTrack(NMHDR *pNotifyStruct, LRESULT *result)
{...}

и в OnNotify ловил
Код

BOOL CMyListCtrl::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{
    LPNMHDR lpNMHDR = reinterpret_cast<LPNMHDR>(lParam);
    switch (lpNMHDR->code)
    {
    case HDN_BEGINTRACK:
        this->InsertItem(m_nNextItem, L"HDN_BEGINTRACK in OnNotify");
        break;
    case HDN_ENDTRACK:
        this->InsertItem(m_nNextItem, L"HDN_ENDTRACK in OnNotify");
        break;
    }

    return CListCtrl::OnNotify(wParam, lParam, pResult);
}

это чтобы доказать мне, что оно работает и так, и так, или это какая-то странная особенность этого события - его нужно и так, и так...


--------------------
user posted image
Задыхаясь от восторга заниматься чепухой. 
PM MAIL   Вверх
Damarus
Дата 30.8.2006, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 671
Регистрация: 6.5.2006

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



Цитата(Antropoid @  30.8.2006,  22:16 Найти цитируемый пост)
Damarus,ехе пишет "Приложение не было запущено, поскольку оно не корректно настроено. Повторная установка приложения может решить данную проблему."

Может это потому, что exe использует MFC и CRT dll'ки от 8-ой студии (MFC80U.dll и MSVCR80.dll). У тебя в системе такие есть smile 

Цитата(Antropoid @  30.8.2006,  22:16 Найти цитируемый пост)
А вообще - ты как-то странно написал и обработчик для события 

Цитата(Antropoid @  30.8.2006,  22:16 Найти цитируемый пост)
это чтобы доказать мне, что оно работает и так, и так,

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


 




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


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

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