MFC树形控件响应
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC树形控件响应相关的知识,希望对你有一定的参考价值。
窗口分割后,左侧为CTreeView,右侧为CEditView,现在想单击树形控件的子节点,在右侧显示响应的图片,请各位高手帮忙解决一下,给点思路,深表感谢
参考技术A 不知道你的自定义控件是从哪个类派生的,也不知道你是否重载了虚函数WindowProc()一般来说控件自身是没有能力自己处理鼠标消息的,在重载虚函数WindowProc()函数时可以看到其直接调用的是该自定义控件的基类的WindowProc()函数,从而没有搜索当前类的消息映射表,所以我们需要改变消息路由,比如我从Static类派生了一个树形控件,这个控件我需要响应鼠标单击等事件事件这时我需要重载WindowsProc()函数并添加
if(
message
==
WM_NCHITTEST||
message
==
WM_NCLBUTTONDBLCLK
||message==WM_NCLBUTTONDOWN||message==WM_NCRBUTTONUP)
return
::DefWindowProc(
m_hWnd,
message,
wParam,
lParam
);
return
CStatic::WindowProc(message,
wParam,
lParam);
也就是截获WN_NCHITTEST(确定光标所在窗口)消息,鼠标单击消息等;使其搜索该类的消息映射表,从而实现鼠标消息的响应。
新手上路,如有不正确之处请多多包涵。
MFC树形控件的使用(右键点击)
概述
在MFC中,会用到树形控件,这里做下记录。
右键点击
1.添加右键点击事件(NM_RCLICK)
2.获得鼠标在Client的坐标
1 CPoint point; 2 GetCursorPos(&point);//获得鼠标在屏幕上的坐标 3 ::ScreenToClient(m_trdPageTree.GetSafeHwnd(),&point);//屏幕坐标转化为客户端坐标
3.测试该坐标点是否点中树形控件节点
1 UINT uFlags; 2 uFlags = TVHT_ONITEM; 3 HTREEITEM hItem = m_trdPageTree.HitTest(point,&uFlags);
4.判断是否点中
if(hItem&&(TVHT_ONITEM & uFlags))
以上是关于MFC树形控件响应的主要内容,如果未能解决你的问题,请参考以下文章