Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> счетчик отжатий кнопки, логика действия 
V
    Опции темы
Mikron
Дата 12.1.2010, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 2.5.2007

Репутация: нет
Всего: нет



Добрый день

подскажите, как можно менее запутаннее реализовать счетчик отжатий клавиши enter

мой вариант

Код

//===============================================================================

if ((GetKeyState(0x0D) & 0x80) != 0)                         //если клавиша enter была нажата                    
{
    sst_kn_enter=1;                                          //состояние клавиши = 1
    c_kn_enter++;                                            //счетчик отнократных нажатий
    c2_kn_enter++;                                           //счетчик многократных нажатий
}

else                                                       //если отжата
{
    sst_kn_enter=0;                                      //состояние клавиши = 0
}

//===============================================================================

if(((c_kn_enter!=0)&&(sst_kn_enter==0))!=0){          //если клавиша была отжата        

    if(((c2_kn_enter!=0)&&(sst_kn_enter==0))!=0){            
        ++schet_kn_enter;                                             //счетчик количества отжатий
        c2_kn_enter=0;
        if(schet_kn_enter>=4){
            schet_kn_enter=0;
        }
    }
    c_kn_enter=0;
}

//========================================================================

if(schet_kn_enter==0)
{
    fun();
}

if(schet_kn_enter==1)
{
    fun();
}

if(schet_kn_enter==2)
{
    fun();
}

if(schet_kn_enter==3)
{
    fun();
}


не используя WM_KEYUP

Это сообщение отредактировал(а) Mikron - 12.1.2010, 12:35
PM MAIL   Вверх
bsa
Дата 12.1.2010, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Я бы сделал так:
Код
bool state = GetKeyState(0x0D) & 0x80; //текущее состояние
if (prevState ^ state) //состояние изменилось
   state ? ++c_kn_enter : ++schet_kn_enter;
prevState = state;

PM   Вверх
artsb
Дата 12.1.2010, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 4
Всего: 64



bsa, последнюю строку тоже под if можно "замять" ИМХО


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
Mikron
Дата 12.1.2010, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 2.5.2007

Репутация: нет
Всего: нет



сасибо за подсказку, вопрос решен
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0421 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.