У меня есть программа, которая использует окна сообщений, чтобы знать, если кнопка быть нажата или нет:Выясните, если кнопка проводится с использованием Windows Messages
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, которое указывает, что кнопка удерживается?
Связанные: http://stackoverflow.com/questions/4127270/c-sharp-how-to-loop-while-mouse-button-is-held-down –