怎样能通过鼠标点击选择TreeCtrl中的某一项?某一项被选中有什么消息产生呢?然后我怎么获取该选中的Item的内容呢?
解决方案 »
- 关于memcpy函数
- 关于程序员的考试
- 把bmp图形打印成3.5x5照片(DPI是360,bmp图1204x1720像素)
- 如何在MFC窗口界面中插入图片?
- 为什么我用openGL写的程序说找不到glut32.dll?谢谢!!!
- 怎样在vc下面实现远程调试,怎样设置,急急...在线等....
- 问题
- 如何启动屏幕保护(在线等待)
- MDIC程序中,怎样才能,不让子窗口的名称显示在“窗口”(窗口管理,像:层叠、平铺等)菜单
- 请问写mfc程序可否用api象是CreateThread...
- 急问:0X80040154 = CoCreateInstance(__uuidof(DOMDocument40), NULL, CLSCTX_ALL, __uuidof(IXMLDOMDocument),(void)**pp);
- 把VC++6.0已经写好的程序如何转换为一个OCX控件,谁能指点一下?
然后对TreeCtrl添加消息OnDblclkTreeCtrl函数,在该函数里添加如下代码:HTREEITEM hHit = NULL;
UINT flag;
CPoint cpMouse,cpHit;
CString csDec= _T("");
GetCursorPos(&cpMouse);
cpHit = cpMouse;
hHit = m_Tool.HitTest(cpHit,&flag);
csDec = m_Tool.GrtItem(hHit ); // csDec 为该选中的Item的内容
{
CPoint pt;
UINT uiflag;
GetCursorPos(&pt);
ScreenToClient(&pt);
HTREEITEM hItem = HitTest(pt, &uiflag);
if ((hItem != NULL) && (TVHT_ONITEM & uiflag)) // 当前是点击在ITEM上
{
SelectItem(hItem);
}
*pResult = 0;
}
我点中了某个Item,可是hHit句柄总是为0,怎么回事?
HTREEITEM hHit = HitTest(ptCurPos);
GetCursorPos(&pt);
m_tree.ScreenToClient(&pt); // 转化坐标系
HTREEITEM hItem = m_tree.HitTest(pt, &uiflag);
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR; // TODO: Add your control notification handler code here
HTREEITEM hSelItem = pNMTreeView.itemNew.hItem; // 当前选中项
*pResult = 0;
}
void CProjectDropTree::OnClick(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
CPoint pt;
UINT uiflag;
GetCursorPos(&pt);
ScreenToClient(&pt);
HTREEITEM hItem = HitTest(pt, &uiflag);
if ((hItem != NULL) && (TVHT_ONITEM & uiflag)) // 当前是点击在ITEM上
{
SelectItem(hItem);
}
*pResult = 0;}