Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Дядя Вася, забыл пароль Гость
|
Добавлено: Пт Янв 30 2004 14:36 Заголовок сообщения: Вопрос по Win Api |
|
|
Имеем VC 7, только WinApi. Кнопка содавалась в редакторе ресурсов.
Нужно поймать сообщение, когда кнопка нажалась (т.е. перешла в нажатое состояние), потом запустится таймер и все такое ... пока кнопка не отпустится.
Пробовал ловить сообщение BN_PUSHED через WM_COMMAND - не работает(HIWORD(wParam) всегда ==0) ( |
|
Вернуться к началу |
|
|
wildwind Гость
|
Добавлено: Пн Фев 02 2004 17:26 Заголовок сообщения: |
|
|
Ловишь WM_LBUTTONDOWN, там ставишь свой таймер и хватаешь мышь за хвост (SetCapture), затем ловишь WM_LBUTTONUP и отпускаешь мышь и таймер.
По этой же схеме нажимается и отпускается сама кнопка. |
|
Вернуться к началу |
|
|
Дядя Вася, забыл пароль Гость
|
Добавлено: Вт Фев 03 2004 08:57 Заголовок сообщения: |
|
|
Так ведь ловить WM_LBUTTONDOWN нужно в оконной процедуре кнопки, а не моего диалога. Т.е. придется свою кнопку писать.
Или я не прав ? |
|
Вернуться к началу |
|
|
wildwind
Зарегистрирован: 03.02.2004 Сообщения: 268 Откуда: Москва
|
Добавлено: Вт Фев 03 2004 12:40 Заголовок сообщения: |
|
|
Да, это уже не стандартная кнопка, потому как стандартная виндовая кнопка призвана реагировать только на одно событие "высокого уровня", то есть "клик", а не на "низкоуровневые" нажатие/отпускание мыши.
Но и не совсем своя, потому что все остальное она делает как тебе надо; так зачем же писать свою с нуля?
Это называется Subclassing, стандартная техника в Windows, некое подобие полиморфизма. После создания кнопки подменяешь ее оконную дуру своей, в ней реализуешь нестандартное поведение (то есть UP/DOWN), а после своей обработки передаешь сообщение в исходную процедуру кнопки. |
|
Вернуться к началу |
|
|
Ersh
Зарегистрирован: 20.01.2004 Сообщения: 107
|
Добавлено: Вт Фев 03 2004 12:51 Заголовок сообщения: |
|
|
2wildwind Что-то я совсем не понял, что имел ввиду, можно поподробнее?
А стандартной кнопки у него нету, он ее создает апишными функциями, также как и окно... Сам создавал только окно, кнопку не создавал, но могу предположить, когда создаешь окно, указываешь функцию обработчик событий, там также передаеться дескриптор кнопки, так вот и лови события описанные выше, только насчет WM я не уверен, мсдн надо почитать, но схема сто пудово такая, надо поймать сначало нажатие кнопки, а потом отпускание, то бишь поймать 2 события. _________________ Анархия - мать порядка!!!!!!!!! |
|
Вернуться к началу |
|
|
wildwind
Зарегистрирован: 03.02.2004 Сообщения: 268 Откуда: Москва
|
|
Вернуться к началу |
|
|
Ersh
Зарегистрирован: 20.01.2004 Сообщения: 107
|
Добавлено: Вт Фев 03 2004 15:01 Заголовок сообщения: |
|
|
бррр... все таки иногда тяжело мсдн читать(((( _________________ Анархия - мать порядка!!!!!!!!! |
|
Вернуться к началу |
|
|
wildwind
Зарегистрирован: 03.02.2004 Сообщения: 268 Откуда: Москва
|
Добавлено: Вт Фев 03 2004 15:20 Заголовок сообщения: |
|
|
Никто не говорил, что будет легко |
|
Вернуться к началу |
|
|
Дядя Вася, забыл пароль Гость
|
Добавлено: Ср Фев 04 2004 14:40 Заголовок сообщения: |
|
|
2 wildwind :
только WinApi, без MFC.
и ОГРОМНОЕ спасибо, идею понял !!! |
|
Вернуться к началу |
|
|
|