学习心得:控件之CToolTipCtrl(加入仿系统目录树视图)

原创 2007年09月16日 13:39:00

说明:这些代码是建立在仿系统目录树视图之上的。(在vs2005下编译通过)

 一、首先在BrowseSysTreeDlg.h 中加入成员CToolTipCtrl* m_pToolTipCtrl。在资源里,Tree Control把ToolTip的属性设为True;

二、然后就是初始化,在BOOL CBrowseSysTreeDlg::OnInitDialog()加入如下代码:

     …………………………

      m_pToolTipCtrl = new CToolTipCtrl;         //记住要找个地方释放内存
      if (NULL == m_pToolTipCtrl || (!m_pToolTipCtrl->Create(this, TTS_ALWAYSTIP)))
                 return FALSE;
     m_pToolTipCtrl->AddTool(&m_ctrlTree, _T("szPath:"));         //加入

    ……………………

三、加入之后就是怎么获取消息了,这里是重载了PreTranslateMessage(MSG * pMsg),在ranslateMessage之前

截获WM_MOUSEMOVE,代码如下:

BOOL CBrowseSysTreeDlg::PreTranslateMessage(MSG * pMsg)
...{
    
if(pMsg->message == WM_MOUSEMOVE && pMsg->hwnd == m_ctrlTree.m_hWnd)
    
...{
        CPoint point(LOWORD(pMsg
->lParam),HIWORD(pMsg->lParam));
        HTREEITEM hItem 
= m_ctrlTree.HitTest(point);
        
if(hItem != NULL)
        
...{
            LPNODEINFO    lpNodeInfo 
= (LPNODEINFO)m_ctrlTree.GetItemData(hItem);
            m_pToolTipCtrl
->UpdateTipText(lpNodeInfo->szPath,&m_ctrlTree);
            m_pToolTipCtrl
->RelayEvent(pMsg);
        }

    }

    
return CDialog::PreTranslateMessage(pMsg);
}

 

另一种方法:

1.在增加ToolTip时不指定显示的字串,而是使用LPSTR_TEXTCALLBACK。 
2.在窗口中增加消息映射 ON_NOTIFY_EX( TTN_NEEDTEXT, 0, SetTipText )。 
4.在窗口中增加一个函数用于动态提供显示内容,其原型为 BOOL SetTipText( UINT id, NMHDR * pTTTStruct, 3LRESULT * pResult ),下面的代码可以根据传入的参数判定应该显示的内容。 
     


BOOL CBrowseSysTreeDlg::SetTipText( UINT id, NMHDR 
* pTTTStruct, LRESULT * pResult )  
 
...{   
     TOOLTIPTEXT 
*pTTT = (TOOLTIPTEXT *)pTTTStruct; 
     UINT nID 
=pTTTStruct->idFrom; //得到相应窗口ID,有可能是HWND 
     if (pTTT->uFlags & TTF_IDISHWND) //表明nID是否为HWND 
     ...
        nID 
= ::GetDlgCtrlID((HWND)nID);//从HWND得到ID值,当然你也可以通过HWND值判断 
        switch(nID) 
        
...{
        
case(IDC_YOUR_CONTROL1): 
            
//设置相应的显示字串 
            return TRUE; 
            
break
        
case(IDC_YOUR_CONTROL2) :
            
//设置相应的显示字串 
            return TRUE; 
            
break
        }

     }

     
return(FALSE); 
}
 


     

C# 系统应用之TreeView控件显示树状磁盘文件目录及加载图标

在C#系统应用毕设U盘防御软件中需要实现文件不可恢复的删除,首先需要实现类似于资源管理器的界面,通过TreeView控件显示"我的电脑"所有磁盘文件树状目录并加载相应图标.显示结果如下图所示: 一...
  • xiao190128
  • xiao190128
  • 2015年09月16日 10:44
  • 6399

C# 系统应用之TreeView控件 (一).显示树状磁盘文件目录及加载图标

文章主要讲述使用C# winForm实现类似于资源管理器的界面,通过TreeView控件显示"我的电脑"所有磁盘文件树状目录,包括"我的文档",所有盘符下子目录.同时通过ImageList加载不同类型...
  • Eastmount
  • Eastmount
  • 2014年02月19日 15:30
  • 22952

MFC 树形控件CTreeCtrl显示文件路径及文件

在上篇文章中简单讲述了"MFC单文档分割窗口显示图片",但是我想实现的是左边显示图片的路径,右边显示图片的情况,所以这里需要讲述如何使用控件List Control\CListCtrl实现该功能,希望...
  • Eastmount
  • Eastmount
  • 2014年02月13日 01:06
  • 14211

ShellExecute执行regsvr32.exe注册com控件到系统目录下

思路:把exe中dll资源导出到系统目录文件夹下     一般32位系统放到system32下,64位系统将32位的放到sysWOW64下,64位控件放到system32下。 //Registry...
  • qq_21794823
  • qq_21794823
  • 2017年03月30日 15:35
  • 929

Tree目录树控件使用示例

  • 2009年07月31日 21:51
  • 529KB
  • 下载

MFC目录树 Table控件等综合应用举例

  • 2010年07月25日 14:06
  • 85KB
  • 下载

Linux学习第十四篇--文件系统和目录树的关系

使用dumpe2fs命令查看文件系统的属性 我们使用man dumpe2fs命令查看该命令的描述,发现该命令的作用主要是输出超级块和块组(BlockGroup)的信息. 个人认为里面比较有用的...
  • panda_52panda
  • panda_52panda
  • 2017年06月19日 10:20
  • 217

Java目录树控件

  • 2014年05月13日 23:42
  • 3KB
  • 下载

CGRidCtrl控件 学习心得

wuqinxiang0我的:收件箱资源博客空间设置|帮助|退出 首页业界移动云计算研发论坛博客下载 更多 狂想盼盼 积累点点滴滴 ...
  • wuqinxiang
  • wuqinxiang
  • 2012年08月31日 13:58
  • 2725

Cocoa Touch 入门记——《精通 iOS 开发》学习心得(1) [基本控件的交互]

首先是熟悉 Xcode 界面。因为这本书的 Xcode 版本并不是最新版,而我的 MacBook 上已经装了 Xcode 5.0,所以带来了一些不便。Xcode 5.0 在创建 Single View...
  • u013883752
  • u013883752
  • 2014年03月03日 14:42
  • 1054
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:学习心得:控件之CToolTipCtrl(加入仿系统目录树视图)
举报原因:
原因补充:

(最多只允许输入30个字)