Я заинтересован в выделении указателей, хранении данных в данных LPARAM элемента управления comboboxex и создании этого элемента управления, ответственного за удаление этих указателей при его уничтожении.Как подключить управление закрытием в классе пользовательского контроля MFC
Поскольку я работаю в MFC, я могу подклассифицировать CComboBoxEx и добавлять либо обработчик сообщений, либо функцию виртуального члена.
Вопрос в следующем: возможна ли эта модель с помощью Win32/MFC?
В принципе, как элемент управления получает уведомление о том, что его соответствующий HWND уничтожается?
Документация WM_DESTROY:
Сообщение WM_DESTROY посылается, когда окно уничтожается. Он отправляется в оконную процедуру разрушаемого окна после удаления окна с экрана. (курсив мой)
К сожалению, мое смутное воспоминание, что это означает, что OnDestroy() слишком поздно что-либо, что требует взаимодействующего с соответствующей HWND обработки, нет?
Можно ли запросить элементы в comboboxex во время OnDestroy()? Есть ли еще один крючок, который я могу использовать, это происходит «Как раз перед тем, как мое окно/элемент управления будет уничтожен (а не после!)?»
Интересно, изменил ли я CBEM_DELETEITEM мой подкласс и заставил его удалить данные LPARAM. Все элементы явно удалены при уничтожении comboboxex? Если это так, все ли они уничтожены через это сообщение (управляет ли это послание для себя?)
Обратите внимание: я знаю, что у меня может быть вектор shared_ptr или scoped_ptr, который хранится в самом диалоге, и в этом случае удаление указателей гарантировано. Однако, чтобы сделать это, я синхронизирую добавления и удаления в этом дополнительном пространстве. – Mordachai