treectrl单击项始终为null [英] treectrl click item always null
本文介绍了treectrl单击项始终为null的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有这段代码
I have this piece of code
ON_NOTIFY(NM_CLICK ,ID_TREENOTES, OnClickTree)
void CShortcutPaneConfServer::OnClickTree(NMHDR* pNMHDR, LRESULT* pResult ) {
CPoint pt;
GetCursorPos( &pt );
m_wndTreeNotes.ScreenToClient( &pt ) ;
UINT nFlags = 0;
HTREEITEM hItem = m_wndTreeNotes.HitTest( pt, &nFlags ) ;
if( hItem == NULL || !(nFlags & (TVHT_ONITEMLABEL|TVHT_ONITEMICON)) )
return;
不幸的是,即使我单击某个项目,hItem始终为NULL.缺少什么?
PS:我是在mdichildframe中,它可能会以某种方式影响光标的坐标,请参见screentoclient?
Unfortunately hItem is always NULL, even if I click on an Item... what''s missing?
PS: Im in a mdichildframe, it could affect in some way cursor coordinates see screentoclient?
推荐答案
我认为您错过了Mouse进入TreeCtrl的位置,请尝试如下操作:
I think that you missed The Mouse location into your TreeCtrl, try as below :
void CShortcutPaneConfServer::OnClickTree(NMHDR* pNMHDR, LRESULT* pResult ) {
// TODO: Add your control notification handler code here
*pResult = 0;
CPoint Point;
//retrieve the mouse position (missed in yout code)
DWORD dwPos;
dwPos = GetMessagePos();
Point.x = LOWORD (dwPos);
Point.y = HIWORD (dwPos);
m_wndTreeNotes.ScreenToClient( &Point );
UINT Flags = TVHT_ONITEMLABEL;
HTREEITEM ht = m_wndTreeNotes.HitTest( Point ,&Flags );
if( ht== NULL || !(Flags & (TVHT_ONITEMLABEL|TVHT_ONITEMICON)) )
return;
}
这篇关于treectrl单击项始终为null的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文