mfc treectrl 树节点添加 图标 和 tooltips(悬停提示信息)

 类似 工具栏的tooltips(可作为操作提示使用, 也可以是提示信息方便查看)

一、添加图标

1、添加ico图标 资源到资源管理库中

2、参见见代码如下:

HICON hIcon[3];
    hIcon[0] = theApp.LoadIcon(IDI_ICON_GREEN_GREEN);
    hIcon[1] = theApp.LoadIcon(IDI_ICON_GREEN_GREY);
    hIcon[2] = theApp.LoadIcon(IDI_ICON_RED_GREEN);

    m_imageList.Create(16, 16, ILC_COLOR32, 3, 3);
    for(int i=0; i<3; i++)
        m_imageList.Add(hIcon[i]);

    m_cTree.SetImageList(&m_imageList, TVSIL_NORMAL);//添加图标到treectrl

    HTREEITEM treeRoot = m_cTree.InsertItem(_T("消息"), 0,1 ); //选中时显示图标1,未选中时显示图标0
    m_cTree.SetItemData(treeRoot,0);
    m_cmdNode1 = m_cTree.InsertItem( _T("子消息1"),1,1, treeRoot );
    m_cTree.SetItemData(m_cmdNode1,1);
    HTREEITEM cmdNode2 = m_cTree.InsertItem( _T("子消息2"),2,2, treeRoot );
    m_cTree.SetItemData(cmdNode2,2);
    HTREEITEM cmdNode3 = m_cTree.InsertItem( _T("子消息3"), treeRoot );//默认使用了第一个
    m_cTree.Expand(treeRoot, TVE_EXPAND);
    m_cTree.SetItemData(cmdNode3,3);

二、添加tooltips

1、treectrl 的 ToolTips 属性和 Info Tip 属性设置为 true

也可使用 m_cTree.ModifyStyle(0, TVS_INFOTIP); 进行修改

2、添加treectrl 的 事件处理程序, TVN_GETINFOTIP, 若 不同的 节点想提示不同的信息 可提前绑定不同的值参见代码如下:

void CtreeDlg::OnTvnGetInfoTipTree1(NMHDR *pNMHDR, LRESULT *pResult)
{
    TOOLTIPTEXT* pT = (TOOLTIPTEXT*)pNMHDR;
    
    CPoint pt;
    GetCursorPos( &pt );
    m_cTree.ScreenToClient( &pt );
    HTREEITEM hItem = m_cTree.HitTest( pt );
    if ( NULL == hItem )
        return;

    int data = m_cTree.GetItemData(hItem);
    CString str("this is tooltips 测试");
    switch( data)
    {
    case 0:
        pT->lpszText = _T("0");
        break;
    case 1:
        pT->lpszText = _T("1");
        break;
    case 2:
        pT->lpszText = _T("2");
        break;
    case 3:
        //wcscpy(pT->lpszText,T2W((LPTSTR)str.GetBuffer(NULL))); // CString 转换为 LPWSTR 
        //str.ReleaseBuffer(); 
        //或
        USES_CONVERSION;
        pT->lpszText = (LPWSTR)A2CW(W2A(str)); //unicode集
        str.ReleaseBuffer(); 
        break;
    }

    *pResult = 0;
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

woquNOKIA

谢谢老板!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值