MFC tree control 问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC tree control 问题相关的知识,希望对你有一定的参考价值。
我想右键点击能选择节点。
我在右键点击消息中实现下面的代码。为什么不行呢~请指教
CPoint MyPoint;
m_tree.ScreenToClient(&MyPoint);
UINT uFlags;
HTREEITEM hItem = m_tree.HitTest(MyPoint, &uFlags);
if ((hItem != NULL) && (TVHT_ONITEM & uFlags))
m_tree.SelectItem(hItem);
放在第二行在转换之前 参考技术A 你需要由CTreeCtrl派生一个新类,比如CTreeCtrlEx
然后响应CTreeCtrlEx的NM_RCLICK消息,在其中添加如下代码
void CTreeCtrlEx::OnRclick(NMHDR* pNMHDR, LRESULT* pResult)
CPoint pt;
GetCursorPos(&pt);
ScreenToClient(&pt);
UINT uFlags;
HTREEITEM hItem = HitTest(pt, &uFlags);
if ((hItem != NULL) && (TVHT_ONITEM & uFlags))
SelectItem(hItem);
*pResult = 0;
最后别忘了将m_tree的类型改为CTreeCtrlEx 参考技术B mfc里的treectrl可没有什么索引,因为节点的关系不一定是并列的兄弟关系,可能是父子关系或者说根与叶的关系。简单的序号是不能标志它们的。
节点的唯一标志用的节点句柄
htreeitem;
如果你真想给每个节点编个号,就用setitemdata()给每个节点绑定一个唯一的整数。
htreeitem
item=ctreectrl::getselecteditem();
int
num=getitemdata(item);
mfc对话框tab control怎么用
参考技术A本例基于VS2008
一、新建一个MFC工程, 取名Tabctrl, 选择基于对话框, 然后点完成。
二、删除对话框上默认添加的三个控件,添加Tab Control控件,属性设置:ID:IDC_TAB1
三、 为Tab Control控件绑定控件变量,变量名为m_Tab,类型为CTabCtrl。
四、在TabCtrlDlg.cpp文件中,找到初始化函数OnInitDialog并在里面添加如下代码:
五、在对话框资源里面添加两个对话框资源,
第一个对话框:
删除对话框上默认添加的三个控件;属性设置:border设置为None;style设置为child, ID为IDD_PAGE1;添加静态文本框,改为“第一页”;再为其添加对应的基于CDialog类CPage1。
第二个对话框:
删除对话框上默认添加的三个控件;属性设置:border设置为None;style设置为child, ID为IDD_PAGE2;添加静态文本框,改为“第二页”;添加对应的基于CDialog类CPage2。
六、 在TabCtrlDlg.h中包含头文件并添加两个个成员变量m_Page1, m_ Page 2,如下:
七、 在TabCtrlDlg.cpp对话框的初始化函数OnInitDialog里面添加如下代码:
八、 选择Tab Control控件,右击/添加事件处理程序,消息类型TCN_SELCHANGE,事件响应函数OnSelchangeTabtest(NMHDR* pNMHDR, LRESULT* pResult) ,
以上是关于MFC tree control 问题的主要内容,如果未能解决你的问题,请参考以下文章