Мое приложение - c ++ и представляет собой комбинацию MFC и ATL.
Часть, с которой я здесь работаю, это MFC.
У меня есть собственный класс управления списком в одном из моих диалогов, который наследуется от CListCtrl.
Я пытаюсь добавить обработчик для сообщения LVN_ITEMCHANGED, чтобы я мог обновить остальную часть диалоговой формы, которая зависит от содержимого списка.
Более конкретно, у каждого элемента списка есть поле флажка, и мне нужно определить, когда это было изменено.
Проблема в том, что мой список не отправляет сообщение.
ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST_OUTPUT_CMDS, OnLvnItemchangedListOutputCmds)
Это моя карта сообщений, и она отлично работает, я обнаружил другие сообщения, такие как LVN _ ITEMCHANGING, NM_CLICK и NM _ RELEASEDCAPTURE, просто изменив сообщение.
Поэтому я предполагаю, что пользовательский класс listctrl почему-то неправильно отправляет сообщение.
На этот вопрос можно ответить многими способами:
1. Как я могу опубликовать сообщение LVN_ITEMCHANGED из дочернего списка его родителю (диалоговое окно)?
2. Я даже ловлю правильное сообщение? Большинство из тех, что я пробовал, вызывали обновление слишком рано (то есть до обновления данных в списке). Когда я это делаю, диалоговое окно обновляется на основе предыдущего состояния списка.
3. Есть ли что-то еще, что я должен делать, а я нет? Я прошу это просто сделать его открытым.