treectrl单击项始终为null [英] treectrl click item always null

查看:83
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆