无法捕捉WM_MOUSEHOVER

诶呦 2011-09-09 12:08:26
问题:按钮自绘
WM_MOUSELEAVE可以捕捉到,WM_MOUSEHOVER捕捉不到,什么原因
...全文
56 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
gold_water 2011-09-09
  • 打赏
  • 举报
回复
贴点关键代码出来吧。。。
healer_kx 2011-09-09
  • 打赏
  • 举报
回复
你是怎么捕捉的啊?
你看看MSDN的描述:


The WM_MOUSEHOVER message is posted to a window when the cursor hovers over the client area of the window for the period of time specified in a prior call to TrackMouseEvent.

A window receives this message through its WindowProc function.
诶呦 2011-09-09
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 healer_kx 的回复:]
哪里的问题?
[/Quote]

原因是我在OnPain()中用了双缓冲,少了CDialog::OnPaint();
诶呦 2011-09-09
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 healer_kx 的回复:]
哪里的问题?
[/Quote]
我在找原因 ==
healer_kx 2011-09-09
  • 打赏
  • 举报
回复
哪里的问题?
诶呦 2011-09-09
  • 打赏
  • 举报
回复
我擦 太悲剧了 好了 散分了 见者有份
leer168 2011-09-09
  • 打赏
  • 举报
回复
消息映射添加了么
诶呦 2011-09-09
  • 打赏
  • 举报
回复
manul up!
诶呦 2011-09-09
  • 打赏
  • 举报
回复
[code=void] CButtonEx::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
//触发WM_MOUSELEAVE||WM_MOUSEHOVER
if (!m_bTracking)
{
TRACKMOUSEEVENT tme;
tme.cbSize = sizeof(tme);
tme.hwndTrack = m_hWnd;
tme.dwFlags = TME_LEAVE | TME_HOVER;
tme.dwHoverTime = 1;
m_bTracking = _TrackMouseEvent(&tme);
//m_bTracking = FALSE;
}
CButton::OnMouseMove(nFlags, point);
}

LRESULT CButtonEx::OnMouseLeave(WPARAM wParam,LPARAM lParam)
{
m_bOver=FALSE;
m_bTracking=FALSE;
InvalidateRect(NULL,FALSE);
return 0;
}

LRESULT CButtonEx::OnMouseHover(WPARAM wParam,LPARAM lParam)
{
m_bOver=TRUE;
//m_bTracking=FALSE;
InvalidateRect(NULL);
return 0;
}
C/C++[/code]

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧