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);

::GetCursorPos( &MyPoint); ;//获得屏幕坐标
放在第二行在转换之前
参考技术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 问题的主要内容,如果未能解决你的问题,请参考以下文章

关于MFC中的tree控件

cache-contro页面缓存处理设置

Mfc PropertyGrid Control 添加之后点击无反应的问题

mfc 如何设置tree最初表示的item

一个关于MFC里Listbox control的问题

通过编写串口助手工具学习MFC过程——添加Tab Control控件