Как добавить поле со списком в заголовок CListCtrl и получить события ComboBoxC++

Программы на C++. Форум разработчиков
Anonymous
 Как добавить поле со списком в заголовок CListCtrl и получить события ComboBox

Сообщение Anonymous »

Я добавляю поле со списком в свой CTreeListHeader (размещенный в диалоговом окне). Как перехватить события для этого Combo в приложении MFC?
Если я добавлю стандартный макрос MFC MFC
ON_CBN_SELCHANGE(IDC_CMB, &CMFCtestDlg::OnCbnSelChangeCmb)

это не работает, потому что ComboBox отправляет уведомление в CTreeList, а nno в диалоговое окно.
Это пример кода:
BOOL CMFCtestDlg::OnInitDialog()
{
CMjAcDialog::OnInitDialog();

RECT rect;

m_cTree.InsertColumn(0, L"xxx", 0, 80);
m_cTree.InsertColumn(1, L"Popis", 0, 180);

CHeaderCtrl* pHead = m_cTree.GetHeaderCtrl();
pHead->GetItemRect(0, &rect);

if (pHead != NULL)
{
m_pCombo = new CComboBox;
RECT cmbRect;
cmbRect.left = rect.left + 1;
cmbRect.top = rect.top + 1;
cmbRect.right = rect.right - 1;
cmbRect.bottom = rect.top + 14;

m_pCombo->Create(CBS_DROPDOWN | CBS_HASSTRINGS | WS_CHILD | WS_OVERLAPPED | WS_VISIBLE, cmbRect, pHead, IDC_CMB);

m_pCombo->GetWindowRect(&cmbRect);
RECT rect;
pHead->GetClientRect(&rect);
pHead->MoveWindow(rect.left, rect.top, (rect.right - rect.left), cmbRect.bottom - cmbRect.top + 2, TRUE);
pHead->Invalidate();
}

TCHAR Planets[9][10] =
{
TEXT("Mercury"), TEXT("Venus"), TEXT("Terra"), TEXT("Mars"),
TEXT("Jupiter"), TEXT("Saturn"), TEXT("Uranus"), TEXT("Neptune"),
TEXT("Pluto??")
};

TCHAR A[16];
int k = 0;

memset(&A, 0, sizeof(A));
for (k = 0; k GetSafeHwnd(), (UINT)CB_ADDSTRING, (WPARAM)0, (LPARAM)A);
}

for (auto const& prvek : *m_pTab)
{
int pos = m_cTree.InsertItem(0, L"adfadf");
m_cTree.SetItemData(pos, (DWORD_PTR)&prvek.first);
m_cTree.SetItemText(pos, 1, L"asdasd");
}

return TRUE;
}


Подробнее здесь: https://stackoverflow.com/questions/790 ... box-events

Вернуться в «C++»