Нажатие кнопк (IDC_BUTTON)
От: onotol3  
Дата: 08.06.11 11:37
Оценка:
В проекте есть диалог на котором выводятся кнопки. И по нажатию кнопки мне нужно изменять значение переменной, но по нажатию значение увеливается "один раз", а нужно чтобы по нажатию на кнопку значение увеличивалось пока кнопка не будет отпущена. Нажатие кнопки отслеживаю таким образом:
case WM_COMMAND:
{
    if (wParam == IDC_BUT_XPRIBLIZ)
    {    
        oxright +=0.2;
        return true;
    }
}


08.06.11 16:11: Перенесено из 'C/C++'
Re: Нажатие кнопк (IDC_BUTTON)
От: CEMb  
Дата: 08.06.11 15:35
Оценка:
Здравствуйте, onotol3, Вы писали:

O>В проекте есть диалог на котором выводятся кнопки. И по нажатию кнопки мне нужно изменять значение переменной, но по нажатию значение увеливается "один раз", а нужно чтобы по нажатию на кнопку значение увеличивалось пока кнопка не будет отпущена. Нажатие кнопки отслеживаю таким образом:

O>
O>case WM_COMMAND:
O>{
O>    if (wParam == IDC_BUT_XPRIBLIZ)
O>    {    
O>        oxright +=0.2;
O>        return true;
O>    }
O>}
O>



пока кнопка не будет отпущена

А сколько раз в единицу времени?

Вообще, WM_COMMAND генерируется не когда кнопка нажата, а когда отжата. Это можно увидеть, если нажимать кнопку мышкой медленно.
По-моему, штатных средств, т.е. сообщений в родительское окно, по которым можно понять "нажали-отжали" — нету.
Я бы делал сабклассинг кнопки.
Если диалог живёт недолго — я бы посоветовал таймер и чекбокс(попробовать, не уверен)
Таймер:
SetTimer, KillTimer
событие WM_TIMER
в нём проверять состояние кнопки через BM_GETSTATE

Или, опять же, не совсем ясна задача... для накручивания переменной можно взять контрол SPIN, он же UP-DOWN. У него ровно нужная функциональность — накручтивает переменную пока нажат. Причём переменная уже внутри есть, и даже можно штатными средствами едит-бокс прикрутить и настроить по-разному, чтоб сам эту переменную показывал.
Re[2]: Нажатие кнопк (IDC_BUTTON)
От: onotol3  
Дата: 08.06.11 15:44
Оценка:
а как отслеживать нажатия SPIN`а????
Re[3]: Нажатие кнопк (IDC_BUTTON)
От: CEMb  
Дата: 09.06.11 08:45
Оценка:
Здравствуйте, onotol3, Вы писали:

O>а как отслеживать нажатия SPIN`а????


А зачем?
Если надо приращать переменную пока кнопка нажата — спин сам это делает. Поведение наращивания вроде бы регулируется (там по дефолту есть некое ускорение).
Это можно без написания программы даже увидеть.
Открыть редактор ресуров, диалог.
Кинуть едит-бокс на диалог
Спин туда же. В свойтвах указать, что он auto buddy, set buddy integer и аттачмент по вкусу(чтобы само в едит засунулось).
Нажать Ctrl+T, потыкать мышкой, посмотреть, как работает. С клавиатуры тоже работает, стрелочками.

Значение снять со спина — UDM_GETPOS32, мин/мах установить — UDM_SETRANGE32
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.