Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > CCheckListBox каие нотификации посылает?


Автор: Nastya 9.7.2008, 14:13
CCheckListBox посылает ли нотификации когда у него меняетс состояние CheckBox'ов? Если да, то какую, какие?

Автор: Earnest 11.7.2008, 14:57
CLBN_CHKCHANGE.
Чтобы узнать это, достаточно заглянуть в код.

Автор: mrgloom 21.11.2012, 12:10
почему то не работает, т.е. не заходит в  OnCheckChangeProfileList при изменении чекбокса.

Код

afx_msg void OnCheckChangeProfileList();


Код

BEGIN_MESSAGE_MAP(CTestWindowDlg, CDrawGraph)
ON_CLBN_CHKCHANGE(IDC_PROFILE_LIST, &CTestWindowDlg::OnCheckChangeProfileList)
END_MESSAGE_MAP()



Код

void CTestWindowDlg::OnCheckChangeProfileList()
{
    int nCount= m_ProfileSelectList.GetItemCount();
    for(int i=0;i<nCount;++i)
    {
        if(m_ProfileSelectList.GetCheck(i))
            m_vec_profile[i].is_show= true;
        else
            m_vec_profile[i].is_show= false;
    }

    UpdateForm();
}


Автор: Earnest 21.11.2012, 13:47
Найди в коде MFC ф-ю CCheckListBox::OnLButtonDown и поставь в ней точку прерывания. На поверхностный взгляд, уведомление посылается. Проверь, так ли это, тогда можно проверять, почему она не ловится. Например, поставить точку прерывания в OnCmdMsg и посмотреть, куда пойдет и почему. 

Автор: mrgloom 21.11.2012, 14:40
у меня оказывается CListCtrl с чекбоксами ,а не CCheckListBox.

Автор: mrgloom 21.11.2012, 15:47
поменял на CCheckListBox теперь работает.

но всё таки интересно как это можно сделать с CListCtrl с чекбоксами.

Автор: Earnest 22.11.2012, 08:42
Очень просто: дописать руками все то, чем отличается код CCheckListBoz от CListBox.
Хотя, может, там и что-то лишнее есть.
Вопрос - зачем?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)