低级鼠标挂钩-鼠标按钮单击与按住 < >我用C++和DICTD3D9来画一个菜单。 我想用鼠标浏览菜单。 我可以得到鼠标的位置,但是,检查是否点击了左键是很棘手的。 我可以检查它是否被按住,但没有单击 bool LBUTTONDOWN = false; LRESULT CALLBACK LowLevelMouseProc(int nCode, WPARAM wParam, LPARAM lParam) { if (nCode == HC_ACTION && (wParam == WM_LBUTTONUP || wParam == WM_LBUTTONDOWN)) { LBUTTONDOWN = wParam == WM_LBUTTONDOWN; } return CallNextHookEx(0, nCode, wParam, lParam); }

低级鼠标挂钩-鼠标按钮单击与按住 < >我用C++和DICTD3D9来画一个菜单。 我想用鼠标浏览菜单。 我可以得到鼠标的位置,但是,检查是否点击了左键是很棘手的。 我可以检查它是否被按住,但没有单击 bool LBUTTONDOWN = false; LRESULT CALLBACK LowLevelMouseProc(int nCode, WPARAM wParam, LPARAM lParam) { if (nCode == HC_ACTION && (wParam == WM_LBUTTONUP || wParam == WM_LBUTTONDOWN)) { LBUTTONDOWN = wParam == WM_LBUTTONDOWN; } return CallNextHookEx(0, nCode, wParam, lParam); },c++,directx,C++,Directx,如何添加检查以查看是否单击了左按钮?LowLevel MouseProc没有双击消息。但是,我想你可以有一个解决办法: 记录LBUTTONDOWN和LBUTTONUP之间的时间间隔,然后检查它是否足够快,可以成为单击事件。由于鼠标动作非常快,最好为捕捉鼠标设置计时器 对于鼠标捕获,仍然可以调用LowLevelMouseProc。但是,对于处理鼠标移动而言,该选项更为方便 在DirectX SDK示例中,有一个名为“CustomFormat”的DirectInput示例。它显示了如何设置计时器来捕

如何添加检查以查看是否单击了左按钮?

LowLevel MouseProc没有双击消息。但是,我想你可以有一个解决办法:

记录LBUTTONDOWN和LBUTTONUP之间的时间间隔,然后检查它是否足够快,可以成为单击事件。由于鼠标动作非常快,最好为捕捉鼠标设置计时器

对于鼠标捕获,仍然可以调用LowLevelMouseProc。但是,对于处理鼠标移动而言,该选项更为方便

在DirectX SDK示例中,有一个名为“CustomFormat”的DirectInput示例。它显示了如何设置计时器来捕获鼠标输入


我希望这有帮助。

你需要使用计时技巧。创建一个名为“nTime”的变量, 当按钮打开时,为其设置零。当LButton关闭时,使用“+=”运算符增加变量值,并根据类似以下值检查变量-

bool LBUTTONDOWN = false;
int nTime = 0;
LRESULT CALLBACK LowLevelMouseProc(int nCode, WPARAM wParam, LPARAM lParam) 
{
    if (nCode == HC_ACTION && (wParam == WM_LBUTTONUP || wParam == WM_LBUTTONDOWN)) 
    {
        LBUTTONDOWN = wParam == WM_LBUTTONDOWN;

        if ( LBUTTONDOWN )
        {
            nTime += 1;
            if ( nTime > 1000 /*( this value depends on you )*/ )
            {
                nTime = 0;
                // Here is your hold event code.
            }
        }
        else
            nTime = 0;
    }
    return CallNextHookEx(0, nCode, wParam, lParam);
}

看看DirectInput。使用DirectInput for keyboard&mouse检查键盘/鼠标/控制器状态非常好多年来一直强烈反对使用DirectInput for keyboard&mouse。上一次它是键盘/鼠标的好选择是Windows9X/ME。