【问题标题】:Find out if a button is being held using Windows Messages使用 Windows 消息确定按钮是否被按住
【发布时间】:2012-01-18 13:53:40
【问题描述】:

我有一个程序使用 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 消息中是否有标志或其他内容表明该按钮被按住?

【问题讨论】:

标签: c# button windows-messages


【解决方案1】:

你可以监听WM_KEYUP事件然后只执行函数或者执行一次函数并锁定它直到你得到WM_KEYUP

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多