WindowProc中做鼠标提示信息的有关问题
WindowProc中做鼠标提示信息的问题
目的:我在视图区画了一个矩形块 CRect(75,55,300,250),想让鼠标经过这个矩形块时出现提示信息。
实现:使用CToolTipCtrl类,在WindowProc中获得鼠标点,然后判断该鼠标点在矩形中则出现提示信息。
CODE:
CRect rect(75,55,300,250);
if(rect.PtInRect(point))
{
str=_T("OK");
CRect rc( LOWORD(lParam),HIWORD(lParam),LOWORD(lParam)+225,HIWORD(lParam)+195);
m_ToolTipCtrl.AddTool(this,str,&rc,800); // m_ToolTipCtrl是CToolTipCtrl类型
m_ToolTipCtrl.Activate(TRUE);
MSG msg;
msg.hwnd = m_hWnd;
msg.message = message;
msg.wParam = wParam;
msg.lParam = lParam;
if (m_ToolTipCtrl.m_hWnd != NULL)
m_ToolTipCtrl.RelayEvent(&msg);
}
错误:当鼠标在该矩形块CRect(75,55,300,250)范围外的右侧很远处时也出现该提示信息,奇怪!!
查了下MSDN说是 lParam 记录了当前鼠标位置信息,应该没有错误吧?为什么会这样?请高手指点!!谢谢~~
------解决方案--------------------
ScreenToClient(&point);
目的:我在视图区画了一个矩形块 CRect(75,55,300,250),想让鼠标经过这个矩形块时出现提示信息。
实现:使用CToolTipCtrl类,在WindowProc中获得鼠标点,然后判断该鼠标点在矩形中则出现提示信息。
CODE:
CRect rect(75,55,300,250);
if(rect.PtInRect(point))
{
str=_T("OK");
CRect rc( LOWORD(lParam),HIWORD(lParam),LOWORD(lParam)+225,HIWORD(lParam)+195);
m_ToolTipCtrl.AddTool(this,str,&rc,800); // m_ToolTipCtrl是CToolTipCtrl类型
m_ToolTipCtrl.Activate(TRUE);
MSG msg;
msg.hwnd = m_hWnd;
msg.message = message;
msg.wParam = wParam;
msg.lParam = lParam;
if (m_ToolTipCtrl.m_hWnd != NULL)
m_ToolTipCtrl.RelayEvent(&msg);
}
错误:当鼠标在该矩形块CRect(75,55,300,250)范围外的右侧很远处时也出现该提示信息,奇怪!!
查了下MSDN说是 lParam 记录了当前鼠标位置信息,应该没有错误吧?为什么会这样?请高手指点!!谢谢~~
------解决方案--------------------
ScreenToClient(&point);