捕获了鼠标的WM_MOUSEMOVE消息,如何判断这次移动是否有操作,如程序窗口的下拉菜单等。

angelcool 2005-04-27 05:17:43
在很多程序中,当鼠标移动到窗口的下拉菜单处时,不需要单击鼠标就会显示下拉菜单的内容。
如何在捕获了鼠标的WM_MOUSEMOVE消息后,
判断它是否给窗口带来了这类变化,还是只是简单的移动??
...全文
672 30 打赏 收藏 举报
写回复
30 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
angelcool 2005-05-11
还是没解决,但是这个不影响系统的正常运行,所以先放下吧!!
多谢大家的帮忙!!
  • 打赏
  • 举报
回复
hello1996 2005-05-09
study
  • 打赏
  • 举报
回复
angelcool 2005-05-08
各位大侠,早上好!
  • 打赏
  • 举报
回复
angelcool 2005-05-08
hello
  • 打赏
  • 举报
回复
angelcool 2005-05-06
The TrackMouseEvent function posts messages when the mouse pointer leaves a window or hovers over a window for a specified amount of time.

但是如果鼠标钩子不能截获WM_MOUSEHOVER消息,TrackMouseEvent就没用了。

还是换一个吧!!
也许真的无法在程序的外部做判断了。
  • 打赏
  • 举报
回复
coolsay 2005-05-06
这我就不知道了
再给个TrackMouseEvent函数,参考一下
  • 打赏
  • 举报
回复
angelcool 2005-05-06
to coolsay(落拓青杉)
它是能被鼠标钩子截获的吗?我试了一下,好像不行。
  • 打赏
  • 举报
回复
coolsay 2005-05-06
鼠标在一个区域停留一端时间会产生WM_MOUSEHOVER消息
  • 打赏
  • 举报
回复
angelcool 2005-05-06
to erben(来瓶蒙牛超级女生的酸酸乳)
谢谢你!
正如你所说,别人的程序就麻烦了。而我正在自找麻烦。
  • 打赏
  • 举报
回复
angelcool 2005-05-05
难道是五一都放假了???今天该有人上班了吧!!
  • 打赏
  • 举报
回复
erben 2005-05-05
如果是别人的程序,那就麻烦了,谁知道人家菜单具体怎么回事?
  • 打赏
  • 举报
回复
erben 2005-05-05
重载主框架的下面三个函数试试:
BOOL menushow=FALSE;
void CMainFrame::OnEnterMenuLoop( BOOL bIsTrackPopupMenu )
{
// mini->DestroyWindow();
TRACE("OnEnterMenuLoop\n");
menushow=TRUE;
CFrameWnd::OnEnterMenuLoop(bIsTrackPopupMenu);
}
void CMainFrame::OnExitMenuLoop( BOOL bIsTrackPopupMenu )
{
// mini->DestroyWindow();
TRACE("OnExitMenuLoop\n");
menushow=FALSE;
CFrameWnd::OnExitMenuLoop(bIsTrackPopupMenu);
}

void CMainFrame::OnNcMouseMove(UINT nHitTest, CPoint point)
{
if(nHitTest==HTMENU)
{
if(!menushow)
{
DWORD D=0;
D=point.y;
D=D<<4;
D|=point.x;
//发左键单击消息这句我不会写,楼主自己试试,
//this->SendMessage(WM_LBUTTONDOWN ,D);
}
}
CFrameWnd::OnNcMouseMove(nHitTest, point);
}
  • 打赏
  • 举报
回复
Stefine 2005-05-03
学习ing
  • 打赏
  • 举报
回复
virtualfunction 2005-05-03
搞的太复杂了!这和hook无关!看看:WM_NCHITTEST 的解释:

The WM_NCHITTEST message is sent to a window when the cursor moves, or when a mouse button is pressed or released. If the mouse is not captured, the message is sent to the window beneath the cursor. Otherwise, the message is sent to the window that has captured the mouse.
A window receives this message through its WindowProc function.
  • 打赏
  • 举报
回复
angelcool 2005-05-02
我之所以想到用钩子,是因为我也不知道还有什么方法!
不用钩子可以,那应该用什么呢??
  • 打赏
  • 举报
回复
erben 2005-04-30
别什么问题都挂到钩子上
  • 打赏
  • 举报
回复
angelcool 2005-04-30
自己顶
  • 打赏
  • 举报
回复
42252343 2005-04-30
我觉的你用钩子也不好处理这个 钩子不是万能的
  • 打赏
  • 举报
回复
YanDong_8212 2005-04-30
不知道WM_PAINT消息行不行?
HOOK我不太懂,你所发生了改变,那就该重绘吧
  • 打赏
  • 举报
回复
angelcool 2005-04-30
再顶一次
  • 打赏
  • 举报
回复
加载更多回复(10)
发帖
VC/MFC

1.6w+

社区成员

VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
帖子事件
创建了帖子
2005-04-27 05:17
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……