#c #winapi #visual-c #mfc
#c #winapi #visual-c #mfc
Вопрос:
Я пытаюсь создать свою собственную сетку свойств. Я создал список рисования владельца. когда мы нажимаем на диалоговое окно, оно всплывает.
но не получаю сообщение, когда я нажимаю на список. как его получить?
Я пытаюсь использовать эту функцию, но не получаю никакого триггера здесь, когда мы нажимаем на любой элемент в Listbox.
BEGIN_MESSAGE_MAP(x_ListBox, CListBox)
ON_CONTROL_REFLECT(LBN_SELCHANGE, amp;x_ListBox::OnLbnSelchange)
END_MESSAGE_MAP()
void x_ListBox::OnLbnSelchange()
{
try
{
auto selIdx = GetCurSel();
ReleaseCapture();
GetParent()->DestroyWindow();
}
catch (CException* p)
{
p->Delete();
}
}
Мне нужно отправить сообщение в текущий выбранный элемент диалогового окна. есть ли какой-либо способ получить сообщение из диалогового окна, когда мы выбираем элемент в списке. как со списком в диалоговом окне m_com.GetLbText(xxx);
Комментарии:
1. Я думаю, вам нужно
ON_NOTIFY_REFLECT
вместоON_CONTROL_REFLECT
2. он используется в CListCtrl, я не нашел ни одного примера использования CListBox. и я проверяю learn.microsoft.com/en-us/cpp/mfc /… также он выдает ON_NOTIFY_REFLECT( wNotifyCode , memberFxn ) afx_msg void memberFxn ( NMHDR * pNotifyStruct , LRESULT* result ); не знаю, как использовать в CListBox.
3. Ну, для начала, ваш
OnLbnSelchange
метод объявлен неверным. В соответствии с тем же документом, на который вы ссылались, он должен быть объявлен какvoid x_ListBox::OnLbnSelchange(NMHDR* pNotifyStruct, LRESULT* result)
вместо.4. В большинстве случаев вы можете использовать classwizard и т. Д. добавить обработчики, и он создаст метод с правильными параметрами.
5. я меняю его, как вы сказали, и в MessageMap также меняю его, по-прежнему не получая никаких сообщений в функции. на карте сообщений // ON_CONTROL_REFLECT(LBN_SELCHANGE, amp;x_ListBox::OnLbnSelchange) ON_NOTIFY_REFLECT(LVN_ITEMCHANGED, amp;x_ListBox::OnLbnSelchange) в функции void x_ListBox::OnLbnSelchange(NMHDR * pNotifyStruct, LRESULT * результат)