VC/MFC 在ListCtl 控件中隨鼠標移動提示單元格信息
睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接
[cpp] view plaincopy
- 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;
- }