获取ctreectrl选项的值全错

发布时间 2023-08-30 17:37:18作者: lydstory
/*
	DWORD   dwpos = GetMessagePos();   
	TVHITTESTINFO ht = {0};   

	ht.pt.x = GET_X_LPARAM(dwpos);
	ht.pt.y = GET_Y_LPARAM(dwpos);
	::MapWindowPoints(HWND_DESKTOP,pNMHDR->hwndFrom,&ht.pt,1); //把屏幕坐标转换成控件坐标
	TreeView_HitTest(pNMHDR->hwndFrom,&ht);   //确定点击的是哪一项
 */
	TVHITTESTINFO HitTestInfo;
	ZeroMemory(&HitTestInfo, sizeof(HitTestInfo));
	HitTestInfo.flags = TVHT_ONITEM;
	GetCursorPos(&HitTestInfo.pt);
	ScreenToClient(&HitTestInfo.pt);
    TreeView_HitTest(pNMHDR->hwndFrom, &HitTestInfo);
 
	CString strOpcServerName = m_treectrl1.GetItemText(HitTestInfo.hItem);

    ::MessageBox(NULL, strOpcServerName, NULL, MB_ICONWARNING);
	/*
		// TODO: 在此添加控件通知处理程序代码
		LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
		DWORD   dwpos = GetMessagePos();   
		TVHITTESTINFO ht = {0};  
		ht.pt.x = GET_X_LPARAM(dwpos);
		ht.pt.y = GET_Y_LPARAM(dwpos);
		::MapWindowPoints(HWND_DESKTOP,pNMHDR->hwndFrom,&ht.pt,1); //把屏幕坐标转换成控件坐标
		HTREEITEM  hItem =  m_treectrl1.HitTest(ht.pt);
		if (hItem)
		{
			CString strOpcServerName = m_treectrl1.GetItemText(hItem);
			int nID = m_treectrl1.GetItemData(hItem);
			CString  strID;
			strID.Format(L"ID  =  %d \r\n" , nID);
	     
		}
		*/