Item changed event in CListCtrl
-
I create a List ctrl derivered from CListCtrl. In this class, I implement item changed event
class CMyListCtrl :
public CListCtrl....
BEGIN_MESSAGE_MAP(CMyListCtrl, CListCtrl)
ON_NOTIFY_REFLECT(LVN_ITEMCHANGED, &CTrendListCtrl::OnLvnItemchanged)
END_MESSAGE_MAP()......
void CMyListCtrl::OnLvnItemchanged(NMHDR *pNMHDR, LRESULT *pResult) // (1)
{
..
}Then, on my dialog, there's a CMyListCtrl object, like this
CMyListCtrl m_lst;
afx_msg void OnLvnItemchangedList(NMHDR *pNMHDR, LRESULT *pResult);
I try to implement the item changed on that list.
BEGIN_MESSAGE_MAP(CMyDlg, CDialog)
ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST_GROUP, &CMyDlg::OnLvnItemchangedList)
END_MESSAGE_MAP()void CMyDlg::OnLvnItemchangedList(NMHDR *pNMHDR, LRESULT *pResult) // (2)
{
...
}The problem is, if I implement (1), then it doesn't run (2). And if I doesn't implement (1), it can run (2). Actually I want to run both (1) and (2). What should I do in this case? Thank you very much, bro.
-
I create a List ctrl derivered from CListCtrl. In this class, I implement item changed event
class CMyListCtrl :
public CListCtrl....
BEGIN_MESSAGE_MAP(CMyListCtrl, CListCtrl)
ON_NOTIFY_REFLECT(LVN_ITEMCHANGED, &CTrendListCtrl::OnLvnItemchanged)
END_MESSAGE_MAP()......
void CMyListCtrl::OnLvnItemchanged(NMHDR *pNMHDR, LRESULT *pResult) // (1)
{
..
}Then, on my dialog, there's a CMyListCtrl object, like this
CMyListCtrl m_lst;
afx_msg void OnLvnItemchangedList(NMHDR *pNMHDR, LRESULT *pResult);
I try to implement the item changed on that list.
BEGIN_MESSAGE_MAP(CMyDlg, CDialog)
ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST_GROUP, &CMyDlg::OnLvnItemchangedList)
END_MESSAGE_MAP()void CMyDlg::OnLvnItemchangedList(NMHDR *pNMHDR, LRESULT *pResult) // (2)
{
...
}The problem is, if I implement (1), then it doesn't run (2). And if I doesn't implement (1), it can run (2). Actually I want to run both (1) and (2). What should I do in this case? Thank you very much, bro.
-
Try changing ON_NOTIFY_REFLECT to ON_NOTIFY_REFLECT_EX and return TRUE inside your CMyListCtrl::OnLvnItemchanged handler. Best Wishes, -David Delaune
uhm, I'm not sure that ... Is this what you mean:
ON_NOTIFY_REFLECT_EX(LVN_ITEMCHANGED, &CMyListCtrl::OnLvnItemchanged)
BOOL CMyListCtrl::OnLvnItemchanged(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: Add your control notification handler code here
LPNMLISTVIEW pNMLV = reinterpret_cast(pNMHDR);
*pResult = 0;
....
return TRUE;
}I cannot see any change ..... :(
-
uhm, I'm not sure that ... Is this what you mean:
ON_NOTIFY_REFLECT_EX(LVN_ITEMCHANGED, &CMyListCtrl::OnLvnItemchanged)
BOOL CMyListCtrl::OnLvnItemchanged(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: Add your control notification handler code here
LPNMLISTVIEW pNMLV = reinterpret_cast(pNMHDR);
*pResult = 0;
....
return TRUE;
}I cannot see any change ..... :(
-
Maybe you need to return FALSE inside the handler rather than TRUE. See if this MSDN article helps: http://msdn.microsoft.com/en-us/library/eeah46xd(VS.71).aspx[^] Best Wishes, -David Delaune
-
I create a List ctrl derivered from CListCtrl. In this class, I implement item changed event
class CMyListCtrl :
public CListCtrl....
BEGIN_MESSAGE_MAP(CMyListCtrl, CListCtrl)
ON_NOTIFY_REFLECT(LVN_ITEMCHANGED, &CTrendListCtrl::OnLvnItemchanged)
END_MESSAGE_MAP()......
void CMyListCtrl::OnLvnItemchanged(NMHDR *pNMHDR, LRESULT *pResult) // (1)
{
..
}Then, on my dialog, there's a CMyListCtrl object, like this
CMyListCtrl m_lst;
afx_msg void OnLvnItemchangedList(NMHDR *pNMHDR, LRESULT *pResult);
I try to implement the item changed on that list.
BEGIN_MESSAGE_MAP(CMyDlg, CDialog)
ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST_GROUP, &CMyDlg::OnLvnItemchangedList)
END_MESSAGE_MAP()void CMyDlg::OnLvnItemchangedList(NMHDR *pNMHDR, LRESULT *pResult) // (2)
{
...
}The problem is, if I implement (1), then it doesn't run (2). And if I doesn't implement (1), it can run (2). Actually I want to run both (1) and (2). What should I do in this case? Thank you very much, bro.