codejock中对listctrl控件tipwindow的使用

1.创建m_tipWindow;

CXTPTipWindow m_tipWindow;

2.在OnInitDialog中初始化

 m_tipWindow.Create(this);
 m_tipWindow.ShowWindow(SW_HIDE);


3.在PreTranslateMessage中添加代码

	if(pMsg->message == WM_MOUSEMOVE && pMsg->wParam == 0)
	{
		int id = ::GetDlgCtrlID(pMsg->hwnd);
		CPoint point;
		point.x = LOWORD(pMsg->lParam);
		point.y = HIWORD(pMsg->lParam);
		if(id == IDC_LISTCTRL)
			MouseOverListCtrl(point);
	}


4.MouseOverListCtrl的声明

void MouseOverListCtrl(CPoint point)
{
	//point = client coordinates inside the listctrl
	int nItem, nCol;

	if ((nItem = m_listCtrl.HitTestEx(point, &nCol)) != -1)
	{

#if _MSC_VER >= 1200 // MFC 5.0
		int nOriginalCol = m_listCtrl.GetHeaderCtrl()->OrderToIndex(nCol);
		CString sItemText = m_listCtrl.GetItemText(nItem, nOriginalCol);
		int iTextWidth = m_listCtrl.GetStringWidth(sItemText) + 5; //5 pixed extra size

		CRect rect;
		m_listCtrl.GetSubItemRect(nItem, nOriginalCol, LVIR_LABEL, rect);

		rect.top--;
		m_tipWindow.SetMargins(CSize(1,1));
		m_tipWindow.SetLineSpace(0);

		//在No.10列显示版本的信息
		sItemText = GetVersionInfo(m_listCtrl.GetItemText(nItem, 10));
		sItemText.Replace(_T("\r\n"), _T("\n")); //Avoid ugly outputted rectangle character in the tip window
		m_tipWindow.SetTipText(_T(""), sItemText);

		//Calculate the client coordinates of the dialog window
		m_listCtrl.ClientToScreen(&rect);
		m_listCtrl.ClientToScreen(&point);
		ScreenToClient(&rect);
		ScreenToClient(&point);

		//Show the tip window
		UpdateData();
		m_tipWindow.ShowTipWindow(rect, point, 2, 0, 5000, false, TRUE);
//		}
#endif

	}
}


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值