Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > Что-то вроде Spin Control |
Автор: Дрон 10.7.2003, 23:17 |
Есть программа, в той программе окно, а в окне кнопка... ![]() По нажатию кнопки увеличивается значение переменной. Как сделать так, что если пользователь нажал и удерживает кнопку нажатой, то значение переменной увеличивалось бы постоянно, как, например, в ScrollBar'е или Spin Control при нажатии на стрелку? Ну а написано это всё, конечно, на "чистом" Win32 API. |
Автор: RAN 11.7.2003, 08:14 |
Есть токие коды у WM_COMMAND, как BN_PUSHED и BN_UNPUSHED, которые MicroSoft советует побыстрей забыть и использовать вместо них, кнопки с BS_OWNERDRAW. Вот в твоём случае они бы идеально подошли: В BN_PUSHED создаёшь таймер SetTimer(hwnd, 1, 1000, NULL); B WM_TIMER увеличиваешь значение В BN_UNPUSHED удаляешь таймер KillTimer(hwnd, 1); А через WM_DRAWITEM, мне кажется, сложно - придётся самому кнопу рисовать. Есть другое решение заменить функцию обработки сообщений кнопки на свою, с вызовом в конце DefWindowProc для стандартной функции обработки. Тогда там использовать WM_LBUTTONDOWN, WM_LBUTTONUP. Или пойти дальше и наложить Hook, хотя это уже крайняя мера. |
Автор: Дрон 11.7.2003, 23:03 |
Понял. Спасибо. |