学习心得:控件之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); 
}
 


     

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

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

思路:把exe中dll资源导出到系统目录文件夹下     一般32位系统放到system32下,64位系统将32位的放到sysWOW64下,64位控件放到system32下。 //Registry...

Tree目录树控件使用示例

  • 2009-07-31 21:51
  • 529KB
  • 下载

CGRidCtrl控件 学习心得

图片传不来,需要完整文档,的可以私下找我要哈 目  录 1      引言... 1 1.1       目的... 1 1.2 ...

Java目录树控件

Windows学习心得【按钮控件】

#include #define ID_SMALLER 1 #define ID_LARGER 2 #define BTN_WIDTH (8* cxChar) #define BTN_HEIGHT ...

C#VS2008中DateTimePicker控件学习心得

C#VS2008中DateTimePicker控件学习心得  (2010-09-28 15:54:04) 转载▼ 标签:  杂谈 分类: 编程之C# ...

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

首先是熟悉 Xcode 界面。因为这本书的 Xcode 版本并不是最新版,而我的 MacBook 上已经装了 Xcode 5.0,所以带来了一些不便。Xcode 5.0 在创建 Single View...

CGRidCtrl控件 学习心得

wuqinxiang0我的:收件箱资源博客空间设置|帮助|退出 首页业界移动云计算研发论坛博客下载 更多 狂想盼盼 积累点点滴滴 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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