首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检测鼠标悬停在窗口的非客户端部分?

如何检测鼠标悬停在窗口的非客户端部分?
EN

Stack Overflow用户
提问于 2021-08-09 05:14:50
回答 1查看 115关注 0票数 0

我有一个使用Direct3D 9绘制到客户区域的程序,大约60 it,而鼠标正在干扰,所以当它在客户区域移动时,我想摆脱它-- only

我认为,在系统调用ShowCursor(false)时,在WM_MOUSEMOVE中调用WM_NCMOUSEMOVE和调用WM_NCMOUSEMOVE时调用ShowCursor(true)是可行的,但这会导致不良行为。

因此,我发现TrackMouseEvent()可以胜任这项工作,但我是这样称呼它的:

代码语言:javascript
复制
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    static bool g_fMouseTracking = false;
    switch (message)
    {
    case WM_MOUSEMOVE:
        if (!g_fMouseTracking)
        {
            TRACKMOUSEEVENT tme;
            tme.cbSize = sizeof(tme);
            tme.dwFlags = TME_NONCLIENT;
            tme.dwHoverTime = HOVER_DEFAULT;
            tme.hwndTrack = hWnd;
            g_fMouseTracking = TrackMouseEvent(&tme);
         }
     break;
     case WM_NCMOUSEHOVER:
         ShowCursor(true);
         break;
    ... 

WM_NCMOUSEHOVER从来没有被调用过。我也不知道原因。

无论如何,这只是一段代码,为了做我想做的事情,我需要更多的代码,但是如果它不调用WM_NCMOUSEMOVE,我就不能开始做更高级的鼠标悬停技巧。

EN

回答 1

Stack Overflow用户

发布于 2021-08-09 05:49:47

当您想要跟踪WM_NCMOUSEHOVER时,必须在WM_NCMOUSEMOVE中使用TrackMouseEvent

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68707122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档