Помогите поймать LVN_BEGINLABELEDIT
От: megalamo  
Дата: 15.02.05 12:59
Оценка:
Есть диалог. На нем размещен Frame (Picture control). Во врейме динамически создается List Control (родительское окно фрейм). Создаю обработчик сообщения LVN_BEGINLABELEDIT, но он не выполняется. Вопрос почему..? Как побороть?
Re: Помогите поймать LVN_BEGINLABELEDIT
От: Pavel Dvorkin Россия  
Дата: 15.02.05 13:04
Оценка:
Здравствуйте, megalamo, Вы писали:

M>Есть диалог. На нем размещен Frame (Picture control). Во врейме динамически создается List Control (родительское окно фрейм). Создаю обработчик сообщения LVN_BEGINLABELEDIT, но он не выполняется. Вопрос почему..? Как побороть?


Стиль LVS_EDITLABELS поставил ?

With best regards
Pavel Dvorkin
With best regards
Pavel Dvorkin
Re[2]: Помогите поймать LVN_BEGINLABELEDIT
От: megalamo  
Дата: 15.02.05 13:10
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Здравствуйте, megalamo, Вы писали:


M>>Есть диалог. На нем размещен Frame (Picture control). Во врейме динамически создается List Control (родительское окно фрейм). Создаю обработчик сообщения LVN_BEGINLABELEDIT, но он не выполняется. Вопрос почему..? Как побороть?


PD>Стиль LVS_EDITLABELS поставил ?


PD>With best regards

PD> Pavel Dvorkin

Да. Проблема в седующем если родителем ListCtrl является диалог то обработчик LVN_BEGINLABELEDIT выполняется, если же CStatic то нет.
Re[3]: Помогите поймать LVN_BEGINLABELEDIT
От: Pavel Dvorkin Россия  
Дата: 15.02.05 13:25
Оценка:
Здравствуйте, megalamo, Вы писали:

M>Да. Проблема в седующем если родителем ListCtrl является диалог то обработчик LVN_BEGINLABELEDIT выполняется, если же CStatic то нет.


Проверь Spy++, приходит ли само сообщение. Должно приходить. Кстати, само редактирование прооходит ?
Скорее всего у тебя просто обработчик как-то не так поставлен. Как его добавил ?

With best regards
Pavel Dvorkin
With best regards
Pavel Dvorkin
Re[4]: Помогите поймать LVN_BEGINLABELEDIT
От: megalamo  
Дата: 15.02.05 13:50
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Здравствуйте, megalamo, Вы писали:


M>>Да. Проблема в седующем если родителем ListCtrl является диалог то обработчик LVN_BEGINLABELEDIT выполняется, если же CStatic то нет.


PD>Проверь Spy++, приходит ли само сообщение. Должно приходить. Кстати, само редактирование прооходит ?

PD>Скорее всего у тебя просто обработчик как-то не так поставлен. Как его добавил ?

PD>With best regards

PD> Pavel Dvorkin

..никогда не пользовался Spy... Редактирование происходит, а обработчик не вызывается... Обработчик создавал визардом (у меня не LIstCtrl а класс наследник от ClistCtrl). Мне кажется здесть проблемы со статиком...
Re[4]: Помогите поймать LVN_BEGINLABELEDIT
От: megalamo  
Дата: 15.02.05 14:00
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Здравствуйте, megalamo, Вы писали:


M>>Да. Проблема в седующем если родителем ListCtrl является диалог то обработчик LVN_BEGINLABELEDIT выполняется, если же CStatic то нет.


PD>Проверь Spy++, приходит ли само сообщение. Должно приходить. Кстати, само редактирование прооходит ?

PD>Скорее всего у тебя просто обработчик как-то не так поставлен. Как его добавил ?

PD>With best regards

PD> Pavel Dvorkin
Вот объявление моего ListCtrl
class CMyListCtrl : public CListCtrl
{
    DECLARE_DYNAMIC(CMyListCtrl)

public:
    CMyListCtrl();
    virtual ~CMyListCtrl();

protected:
    DECLARE_MESSAGE_MAP()
public:
    afx_msg void OnLvnBeginlabeledit(NMHDR *pNMHDR, LRESULT *pResult);
};


Вот карта сообщений и обработчик сообщения
BEGIN_MESSAGE_MAP(CMyListCtrl, CListCtrl)
    ON_NOTIFY_REFLECT(LVN_BEGINLABELEDIT, OnLvnBeginlabeledit)
END_MESSAGE_MAP()

void CMyListCtrl::OnLvnBeginlabeledit(NMHDR *pNMHDR, LRESULT *pResult)
{
    NMLVDISPINFO *pDispInfo = reinterpret_cast<NMLVDISPINFO*>(pNMHDR);
    // TODO: Add your control notification handler code here
    *pResult = 0;
}


А вот так я создаю объект
      //Создадим MyListCtrl
    CWnd *pCWnd;
    pCWnd = GetDlgItem(IDC_STATIC1);
    CRect rect;
    pCWnd->GetClientRect(&rect);
    m_PropList.Create(WS_CHILD|WS_BORDER|WS_VISIBLE|LVS_EDITLABELS|LVS_REPORT, rect, pCWnd, 1); 
    //Инициализируем столбцы
    LVCOLUMN lvc;
    lvc.mask = LVCF_FMT|LVCF_WIDTH|LVCF_TEXT|LVCF_SUBITEM;
    lvc.fmt=LVCFMT_CENTER;
    lvc.cx=25;
    lvc.iSubItem=0;
    lvc.pszText = "№";
    m_PropList.InsertColumn(0, &lvc);
Re[5]: Помогите поймать LVN_BEGINLABELEDIT
От: Игорь Вартанов Ниоткуда  
Дата: 15.02.05 17:21
Оценка:
Здравствуйте, megalamo.

Статик — очень своеобразный зверь, он (если не установлен стиль SS_NOTIFY) пересылает все полученные сообщения родителю. Попробуй поставить упомянутый стиль.
---
С уважением,
Игорь
Re[6]: Помогите поймать LVN_BEGINLABELEDIT
От: Игорь Вартанов Ниоткуда  
Дата: 15.02.05 17:23
Оценка:
Здравствуйте, Игорь Вартанов, Вы писали:

ИВ>Статик — очень своеобразный зверь, он (если не установлен стиль SS_NOTIFY) пересылает все полученные сообщения родителю. Попробуй поставить упомянутый стиль.


Sorry, я неверно выразился — не статик пересылает сообщения, а DispatchMessage их (не все, а не относящиеся к делу статика) просто ему не посылает, посылая сразу родителю.
---
С уважением,
Игорь
Re[7]: Помогите поймать LVN_BEGINLABELEDIT
От: megalamo  
Дата: 16.02.05 11:32
Оценка:
Здравствуйте, Игорь Вартанов, Вы писали:

ИВ>Здравствуйте, Игорь Вартанов, Вы писали:


ИВ>>Статик — очень своеобразный зверь, он (если не установлен стиль SS_NOTIFY) пересылает все полученные сообщения родителю. Попробуй поставить упомянутый стиль.


ИВ>Sorry, я неверно выразился — не статик пересылает сообщения, а DispatchMessage их (не все, а не относящиеся к делу статика) просто ему не посылает, посылая сразу родителю.


И как же тогда обработать LVN_BEGINLABELEDIT?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.