Не получает сообщения после изменения родительского элемента

В моем приложении постоянно открывается и закрывается множество диалогов. Диалоги не модальные. Чтобы сохранить производительность, мы «перерабатываем» некоторые из более сложных элементов управления. Когда одно диалоговое окно закрывается, элементы управления не уничтожаются, но их указатели сохраняются в массиве, чтобы их можно было повторно использовать при открытии другого диалогового окна.
Проблема заключается в том, что после размещения элемента управления в новом диалоговом окне, он не получает все сообщения. Например, сообщение WM_DRAWITEM (управление получено из CListCtrl) больше не отправляется. С другой стороны, WM_LBUTTONDOWN все еще прибывает. Как будто элемент управления больше не знает своего класса. Область ЧПУ (граница и заголовок) отрисовывается правильно.
Были ли у кого-нибудь подобные проблемы? Что могло быть не так? Можно ли вообще таким образом «отсоединить» и «прикрепить» элементы управления?


person Bojan Hrnkas    schedule 23.07.2013    source источник


Ответы (1)


Чтобы CListCtrl отвечал на изображение WM_DRAWITEM, он должен иметь стиль LVS_OWNERDRAWFIXED. Вы уверены, что он настроен?

И из http://msdn.microsoft.com/en-us/library/windows/desktop/bb774739(v=vs.85).aspx, похоже, это происходит только в том случае, если он находится в представлении отчета (мне это кажется странным!).

person sergiol    schedule 05.04.2014