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

angelcool 2005-04-27 05:17:43
在很多程序中,当鼠标移动到窗口的下拉菜单处时,不需要单击鼠标就会显示下拉菜单的内容。
如何在捕获了鼠标的WM_MOUSEMOVE消息后,
判断它是否给窗口带来了这类变化,还是只是简单的移动??
...全文
589 点赞 收藏 30
写回复
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
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
再顶一次
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告
暂无公告