0

我有一个程序,它使用 Windows 消息来了解是否单击了按钮:

IntPtr GetMsg(int nCode, IntPtr wParam, IntPtr lParam)
    {
        if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN)
        {
            int vkCode = Marshal.ReadInt32(lParam);

            if ((Keys)vkCode == Keys.SomeKey)
            {
                /*Functions*/
            }
         }
     }

这些按钮可以在任何地方按下,程序仍然会处理它们。

问题是,每当用户按住某个按钮时,该按钮执行的功能会在短时间内重复很多次。即使该功能不是那么重 - 它仍然会导致计算机冻结或工作缓慢几秒钟。

如果我知道按钮被按住,我只需执行一次该功能。

Windows 消息中是否有标志或其他内容表明该按钮被按住?

4

1 回答 1

3

您可以侦听WM_KEYUP事件,然后只执行该函数,或者执行该函数一次并锁定它,直到您获得WM_KEYUP.

于 2012-01-18T13:58:48.007 回答