CTreeCtrl树中如何能只响应点击图标事件? (UP有分)

xschenhao 2003-03-26 10:45:38
在带图标CTreeCtrl结点树如何使鼠标只响应点击图标事件,在点击树中文本
内容时无反应?
...全文
77 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
phoenixzz 2003-03-28
  • 打赏
  • 举报
回复
up
xschenhao 2003-03-28
  • 打赏
  • 举报
回复
up
xschenhao 2003-03-28
  • 打赏
  • 举报
回复
奇怪,怎么结贴时报这样的错误,不让我结贴?

“2,2,3,0,2,2,0,0,2,0,2,0,80,0,,,5,0,,,0,0,,,0,,
贴子回复次数大于跟给分次数 ”
xschenhao 2003-03-28
  • 打赏
  • 举报
回复
to feiniaoliang(飞鸟良) :

thank you very much !
feiniaoliang 2003-03-28
  • 打赏
  • 举报
回复
to xschenhao(netboy) :

已经改好了,发还给你了!!去看看!!!
xschenhao 2003-03-28
  • 打赏
  • 举报
回复
已发。。
thank you!
feiniaoliang 2003-03-28
  • 打赏
  • 举报
回复
还是ClientToScreen( &point ),
feiniaoliang 2003-03-28
  • 打赏
  • 举报
回复
我的邮箱:

Eugen_Li@hotmai.com
xschenhao 2003-03-28
  • 打赏
  • 举报
回复
用ClientToScreen( point)编译通不过。。
xschenhao 2003-03-28
  • 打赏
  • 举报
回复
to feiniaoliang(飞鸟良):
还是没有反应。。

请问你的邮箱是什么,我把程序发给你看看。。
要不你把你的程序发过来看看。
xschenhao@163.net
QQ:936312

feiniaoliang 2003-03-28
  • 打赏
  • 举报
回复
不是,就是ClientToScreen( point ),
feiniaoliang 2003-03-28
  • 打赏
  • 举报
回复
to xschenhao(netboy) :
再最前面加一句,ClientToScreen( &point ),你再试一下!!!
xschenhao 2003-03-28
  • 打赏
  • 举报
回复
我这里是无任何反应,没有弹出MessageBox

point需要怎么转换?
hblsf 2003-03-28
  • 打赏
  • 举报
回复
我试过也没问题呀!!!
feiniaoliang 2003-03-28
  • 打赏
  • 举报
回复
你跟一下,可能你的那个point需要转换一下!!!!
feiniaoliang 2003-03-28
  • 打赏
  • 举报
回复
to xschenhao(netboy) :
你所说的没有成功是什么状况!我的代码都可以成功呀!!!
xschenhao 2003-03-28
  • 打赏
  • 举报
回复
还是没有成功,以下是我的代码:

VCTREEDlg.h文件:
CTreeCtrl m_TreeCtrl;

VCTREEDlg.cpp文件:
void CVCTREEDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
UINT uFlags;
HTREEITEM hItem = m_TreeCtrl.HitTest(point, &uFlags);
CRect Rect,IconRect;

if(hItem != NULL)
{
if(m_TreeCtrl.GetItemRect(hItem,&Rect,TRUE))
{
IconRect.left = Rect.left - 16;//16
IconRect.right = Rect.left;
IconRect.top = Rect.top;
IconRect.bottom = Rect.bottom;


if(IconRect.PtInRect(point))
{
AfxMessageBox("is icon");
}
else
{
AfxMessageBox("not icon");
}
}
}

CDialog::OnLButtonDown(nFlags, point);
}

feiniaoliang 2003-03-28
  • 打赏
  • 举报
回复
添加一个OnLButtonDown()的消息,里面添加如下代码!!!

UINT uFlags;
HTREEITEM hItem = HitTest(point, &uFlags);
CRect Rect,IconRect;

if(hItem != NULL)
{
if(GetItemRect(hItem,&Rect,TRUE))
{
IconRect.left = Rect.left - youriconWidth;//16
IconRect.right = Rect.left;
IconRect.top = Rect.top;
IconRect.bottom = Rect.bottom;


if(IconRect.PtInRect(point))
{
AfxMessageBox("is icon");
}
else
{
AfxMessageBox("not icon");
}
}
}

xschenhao 2003-03-28
  • 打赏
  • 举报
回复
举例如下:

HTREEITEM hSel=m_TreeCtrl.GetSelectedItem();//取得选项句柄;
m_TreeCtrl.GetItemImage(hSel, nImage, nSelectedImage);//得到当前图标序号
nImage=(nImage==0)?1:0;//更改当前图标序号(取反)
m_TreeCtrl.SetItemImage(hSel, nImage,nImage);//重新设置图标

在带图标的树中,在点击树结点左边的小图标时,系统才响应事件进行图标切换,在点击
树结点文本位置时不作反应.
eatingfish 2003-03-28
  • 打赏
  • 举报
回复
不处理其他的事件不就行了吗?重载其他事件的函数
加载更多回复(8)

15,976

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧