• VC/MFC 在ListCtl 控件中随鼠标移动提示单元格信息


    BEGIN_MESSAGE_MAP(CTipListCtrl, CListCtrl)
    	//{{AFX_MSG_MAP(CTipListCtrl)
    	ON_WM_MOUSEMOVE()
    	ON_WM_DESTROY()
    	//}}AFX_MSG_MAP
    END_MESSAGE_MAP()
    
    /////////////////////////////////////////////////////////////////////////////
    // CTipListCtrl message handlers
    
    void CTipListCtrl::OnMouseMove(UINT nFlags, CPoint point) 
    {
    	// TODO: Add your message handler code here and/or call default
    
    	if(m_bEnableTips)
    	{
    		CString str;
    		LVHITTESTINFO lvhti;
    		
    		// 判断鼠标当前所在的位置(行, 列)
    		lvhti.pt = point;	
    		SubItemHitTest(&lvhti);
    		
    		// 如果鼠标移动到另一个单元格内, 则进行处理; 否则, 不做处理
    		if((lvhti.iItem != m_nItem) || (lvhti.iSubItem != m_nSubItem))
    		{
    			// 保存当前鼠标所在的(行,列)
    			m_nItem = lvhti.iItem;
    			m_nSubItem = lvhti.iSubItem;
    			
    			// 如果鼠标移动到一个合法的单元格内,则显示新的提示信息
    			// 否则, 不显示提示
    			
    			if((m_nItem != -1) && (m_nSubItem != -1))
    			{
    				// @@@@@@@@ 在这里修改要显示的提示信息
    				// 这里仅仅是一个例子---获得当前单元格的文字信息, 并设置为新的提示信息
    				str = GetItemText(m_nItem ,m_nSubItem);				
    				m_toolTip.AddTool(this, str);
    				// 显示提示框
    				m_toolTip.Pop();
    			}
    			else
    			{
    				m_toolTip.AddTool(this, _T("双击记录可查看人员详细信息并对其修改"));
    				// 显示提示框
    				m_toolTip.Pop();
    			}
    			
    		}
    	}
    	
    	CListCtrl::OnMouseMove(nFlags, point);
    }
    
    BOOL CTipListCtrl::PreTranslateMessage(MSG* pMsg) 
    {
    	// TODO: Add your specialized code here and/or call the base class
    	if(::IsWindow(m_toolTip.GetSafeHwnd()))
    	{
    		m_toolTip.RelayEvent(pMsg);
    	}
    	
    	return CListCtrl::PreTranslateMessage(pMsg);
    }
    
    void CTipListCtrl::OnDestroy() 
    {
    	CListCtrl::OnDestroy();
    	
    	// TODO: Add your message handler code here
    	// listctrl销毁时, 同时销毁 tooltipctrl
    	m_toolTip.DestroyWindow();
    	m_toolTip.Detach();
    }
    
    BOOL CTipListCtrl::EnableTips()
    {
    	EnableToolTips(TRUE);
    	// 创建tooltip控件
        m_bEnableTips = m_toolTip.Create(this, TTS_ALWAYSTIP);
    	
    	if(m_bEnableTips)
    	{
    		m_toolTip.Activate(TRUE);
    		m_toolTip.SetDelayTime(TTDT_INITIAL, 0);
    	}
    	
    	return m_bEnableTips;
    }
    

      

  • 相关阅读:
    操作系统简介
    正则表达式
    Python socket
    计算机网络基础
    计算机基础
    Python常用模块
    Python模块和包
    Python反射和内置方法(双下方法)
    Python类的成员
    更改命令行,完全显示hostname
  • 原文地址:https://www.cnblogs.com/Y1Focus/p/4224287.html
Copyright © 2020-2023  润新知