LVN_GETDISPINFO
Hieu Nguyen -- nguyen_hieu@geocities.com Tuesday, February 11, 1997 Environment: NT 4.0, VC 4.1 Hi all, I derived a class from CListCtrl, lets call CMyListCtrl. In my derived class I wish to trap the message LVN_GETDISPINFO, I add overide virtual method CMyListCtrl::OnNotify(), and check if code is LVN_GETDISPINFO BOOL CMyListCtrl::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult) { LV_DISPINFO *pnmv = (LV_DISPINFO FAR *) lParam; if ( ((*pnmv).hdr).code == LVN_GETDISPINFO ) TRACE( "FOUND\n" ); return CListCtrl ::OnNotify(wParam, lParam, pResult); } Using break point to examine the code, I can tell the code never trapped LVN_GETDISPINFO. I also overide virtual method CMyListCtrl::WindowProc(): LRESULT CMyListCtrl::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) { LRESULT Result; if (message == WM_NOTIFY) OnNotify( wParam, lParam, &Result); return CListCtrl::WindowProc(message, wParam, lParam); } I couldn't trapped LVN_GETDISPINFO either. Can someone help me with this problem? Thanks in advance. -Hieu
SOECC01.NUEBEL01 -- SOECC01.NUEBEL01@ssw.alcoa.com Thursday, February 13, 1997 [Mini-digest: 5 responses] I don`t know, how your message maps looks like, but you can use ON_NOTIFY_REFLECT(LVN_GETDISPINFO, OnGetDispInfo), to map WM_NOTIFY in your control class (will call CMyListCtrl::OnGetDispInfo) or you can use ON_NOTIFY(LVN_GETDISPINFO, IDC_MYCTRLID, OnGetDispInfo), to map WM_NOTIY in your view class (will call CMyView::OnGetDispInfo). Seems to me, that you are trying to catch the message in the wrong place, WM_NOTIFY will go to the parent window, unless you are using message reflection. -- Markus ============================================================================ Markus Nuebel | voice: +49 +2921 970-354 ALCOA Automotive Structures GmbH | Overweg 24 | e-Mail: SOECC01.NUEBEL01@SSW.ALCOA.COM 59471 Soest , Germany | fax: +49 +2921 970-499 ============================================================================ _______________________________________________________________________________ Betreff:LVN_GETDISPINFO Von:mfc-l@netcom.com bei ~AMSCCSSW Datum:13.02.1997 3:27 Uhr Environment: NT 4.0, VC 4.1 Hi all, I derived a class from CListCtrl, lets call CMyListCtrl. In my derived class I wish to trap the message LVN_GETDISPINFO, I add overide virtual method CMyListCtrl::OnNotify(), and check if code is LVN_GETDISPINFO BOOL CMyListCtrl::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult) {* LV_DISPINFO *pnmv = (LV_DISPINFO FAR *) lParam; if ( ((*pnmv).hdr).code == LVN_GETDISPINFO ) TRACE( "FOUND\n" ); return CListCtrl ::OnNotify(wParam, lParam, pResult); }* Using break point to examine the code, I can tell the code never trapped LVN_GETDISPINFO. I also overide virtual method CMyListCtrl::WindowProc(): LRESULT CMyListCtrl::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) {* LRESULT Result; if (message == WM_NOTIFY) OnNotify( wParam, lParam, &Result); return CListCtrl::WindowProc(message, wParam, lParam); }* I couldn't trapped LVN_GETDISPINFO either. Can someone help me with this problem? Thanks in advance. -Hieu -----From: "Ed Wheeless"When adding items to the list control, are you setting item.pszText = LPSTR_TEXTCALLBACK? ---------- > From: Hieu Nguyen > To: mfc-l > Subject: LVN_GETDISPINFO > Date: Tuesday, February 11, 1997 6:10 AM > > Environment: NT 4.0, VC 4.1 > Hi all, > > I derived a class from CListCtrl, lets call CMyListCtrl. > In my derived class I wish to trap the message LVN_GETDISPINFO, > I add overide virtual method CMyListCtrl::OnNotify(), and check > if code is LVN_GETDISPINFO > > > BOOL CMyListCtrl::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* > pResult) > { > LV_DISPINFO *pnmv = (LV_DISPINFO FAR *) lParam; > if ( ((*pnmv).hdr).code == LVN_GETDISPINFO ) > TRACE( "FOUND\n" ); > return CListCtrl ::OnNotify(wParam, lParam, pResult); > } > > Using break point to examine the code, I can tell the code never > trapped LVN_GETDISPINFO. I also overide virtual method > CMyListCtrl::WindowProc(): > > LRESULT CMyListCtrl::WindowProc(UINT message, WPARAM wParam, LPARAM > lParam) > { > LRESULT Result; > if (message == WM_NOTIFY) > OnNotify( wParam, lParam, &Result); > return CListCtrl::WindowProc(message, wParam, lParam); > } > > I couldn't trapped LVN_GETDISPINFO either. > > Can someone help me with this problem? Thanks in advance. > -Hieu -----From: ktm@ormec.com On mfc-l, Hieu (nguyen_hieu@geocities.com) wrote: > I derived a class from CListCtrl, lets call CMyListCtrl. > In my derived class I wish to trap the message LVN_GETDISPINFO, > > [code snipped] > > Using break point to examine the code, I can tell the code never > trapped LVN_GETDISPINFO. See the documentation for LVN_GETDISPINFO: "The LVN_GETDISPINFO notification message is sent by a list view control to its parent window." You'll never be able to trap LVN_GETDISPINFO in a control derived from CListView, since the control is *specifically* sending the notification to its parent window, in this case, the frame window. Katy -- Katy Mulvey ktm@ormec.com Software Development Engineer ORMEC Systems http://www.ormec.com -----From: nabraham@roadshow.com TO: mfc-l@netcom.com Hi, The following code illustrates how to trap LVN_GETDISPINFO message for a listview control in property page. HTH Naveen //Header file class CMyPage : public CPropertyPage { public: //assuming CMyListCtrl is derived from CListCtrl CMyListCtrl m_wndListCtrl; //Child Control in propertypage, say its ID is IDC_LISTVIEW protected: afx_msg void OnGetdispinfoListView(NMHDR* pNMHDR, LRESULT* pResult); DECLARE_MESSAGE_MAP() } //CPP file BEGIN_MESSAGE_MAP(CMyPage, CPropertyPage) ON_NOTIFY(LVN_GETDISPINFO, IDC_LISTVIEW, OnGetdispinfoListView) END_MESSAGE_MAP() void CMyPage::OnGetdispinfoListView(NMHDR* lParam, LRESULT* pResult) { LV_DISPINFO *pLvdi = = (LV_DISPINFO *)lParam; //here u can call ur (virtual) function m_wndList.OnGetdispinfoListView(NMHDR* lParam, LRESULT* pResult) ... *pResult = 1; } ---------- From: mfc-l[SMTP:mfc-l@netcom.com] Sent: Thursday, February 13, 1997 10:56 AM To: mfc-l Subject: LVN_GETDISPINFO Environment: NT 4.0, VC 4.1 Hi all, I derived a class from CListCtrl, lets call CMyListCtrl. In my derived class I wish to trap the message LVN_GETDISPINFO, I add overide virtual method CMyListCtrl::OnNotify(), and check if code is LVN_GETDISPINFO BOOL CMyListCtrl::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult) {_ LV_DISPINFO *pnmv = (LV_DISPINFO FAR *) lParam; if ( ((*pnmv).hdr).code == LVN_GETDISPINFO ) TRACE( "FOUND\n" ); return CListCtrl ::OnNotify(wParam, lParam, pResult); }_ Using break point to examine the code, I can tell the code never trapped LVN_GETDISPINFO. I also overide virtual method CMyListCtrl::WindowProc(): LRESULT CMyListCtrl::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) {_ LRESULT Result; if (message == WM_NOTIFY) OnNotify( wParam, lParam, &Result); return CListCtrl::WindowProc(message, wParam, lParam); }_ I couldn't trapped LVN_GETDISPINFO either. Can someone help me with this problem? Thanks in advance. -Hieu -----From: "Gunnar \Vrn Rafnsson" The control sends WM_NOTIFY to its parent, so you would have to trap the = OnNotify message there. But the control can handle it self if you use // Clip from ClassWizard generated CMyListCtrl BEGIN_MESSAGE_MAP(CMyListCtrl, CListCtrl) //{{AFX_MSG_MAP(CMyListCtrl) ON_NOTIFY_REFLECT(LVN_GETDISPINFO, OnGetdispinfo) //}}AFX_MSG_MAP END_MESSAGE_MAP() /////////////////////////////////////////////////////////////////////////= //// // CMyListCtrl message handlers void CMyListCtrl::OnGetdispinfo(NMHDR* pNMHDR, LRESULT* pResult)=20 { LV_DISPINFO* pDispInfo =3D (LV_DISPINFO*)pNMHDR; // TODO: Add your control notification handler code here =09 *pResult =3D 0; } -----Original Message----- From: Hieu Nguyen [SMTP:nguyen_hieu@geocities.com] Sent: 13. febr=FAar 1997 18:17 To: mfc-l Subject: LVN_GETDISPINFO Environment: NT 4.0, VC 4.1 Hi all, I derived a class from CListCtrl, lets call CMyListCtrl. In my derived class I wish to trap the message LVN_GETDISPINFO, I add overide virtual method CMyListCtrl::OnNotify(), and check if code is LVN_GETDISPINFO BOOL CMyListCtrl::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT*=20 pResult)=20 {=04 LV_DISPINFO *pnmv =3D (LV_DISPINFO FAR *) lParam; if ( ((*pnmv).hdr).code =3D=3D LVN_GETDISPINFO ) TRACE( "FOUND\n" ); return CListCtrl ::OnNotify(wParam, lParam, pResult); }=04 Using break point to examine the code, I can tell the code never trapped LVN_GETDISPINFO. I also overide virtual method CMyListCtrl::WindowProc(): LRESULT CMyListCtrl::WindowProc(UINT message, WPARAM wParam, LPARAM=20 lParam)=20 {=04 LRESULT Result; if (message =3D=3D WM_NOTIFY) OnNotify( wParam, lParam, &Result); return CListCtrl::WindowProc(message, wParam, lParam); }=04 I couldn't trapped LVN_GETDISPINFO either. Can someone help me with this problem? Thanks in advance. -Hieu
Become an MFC-L member | Вернуться в корень Архива |