Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Вопрос по Win Api

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Windows
Предыдущая тема :: Следующая тема  
Автор Сообщение
Дядя Вася, забыл пароль
Гость





СообщениеДобавлено: Пт Янв 30 2004 14:36    Заголовок сообщения: Вопрос по Win Api Ответить с цитатой

Имеем VC 7, только WinApi. Кнопка содавалась в редакторе ресурсов.
Нужно поймать сообщение, когда кнопка нажалась (т.е. перешла в нажатое состояние), потом запустится таймер и все такое ... пока кнопка не отпустится.

Пробовал ловить сообщение BN_PUSHED через WM_COMMAND - не работает(HIWORD(wParam) всегда ==0) Sad(
Вернуться к началу
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), а после своей обработки передаешь сообщение в исходную процедуру кнопки.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Ersh



Зарегистрирован: 20.01.2004
Сообщения: 107

СообщениеДобавлено: Вт Фев 03 2004 12:51    Заголовок сообщения: Ответить с цитатой

2wildwind Что-то я совсем не понял, что имел ввиду, можно поподробнее?
А стандартной кнопки у него нету, он ее создает апишными функциями, также как и окно... Сам создавал только окно, кнопку не создавал, но могу предположить, когда создаешь окно, указываешь функцию обработчик событий, там также передаеться дескриптор кнопки, так вот и лови события описанные выше, только насчет WM я не уверен, мсдн надо почитать, но схема сто пудово такая, надо поймать сначало нажатие кнопки, а потом отпускание, то бишь поймать 2 события.
_________________
Анархия - мать порядка!!!!!!!!!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
wildwind



Зарегистрирован: 03.02.2004
Сообщения: 268
Откуда: Москва

СообщениеДобавлено: Вт Фев 03 2004 14:12    Заголовок сообщения: Ответить с цитатой

2 Ersh: Не факт, что Дядя Вася работает только через API, возможно у него MFC-прога. Тогда CWnd::SubclassDlgItem - это то что ему нужно.
Пусть сам скажет, MFC у него или нет.

Про Subclassing в MSDN:
About Window Procedures
Safe Subclassing in Win32
Subclassing Controls
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Ersh



Зарегистрирован: 20.01.2004
Сообщения: 107

СообщениеДобавлено: Вт Фев 03 2004 15:01    Заголовок сообщения: Ответить с цитатой

бррр... все таки иногда тяжело мсдн читать((((
_________________
Анархия - мать порядка!!!!!!!!!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
wildwind



Зарегистрирован: 03.02.2004
Сообщения: 268
Откуда: Москва

СообщениеДобавлено: Вт Фев 03 2004 15:20    Заголовок сообщения: Ответить с цитатой

Никто не говорил, что будет легко Very Happy
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Дядя Вася, забыл пароль
Гость





СообщениеДобавлено: Ср Фев 04 2004 14:40    Заголовок сообщения: Ответить с цитатой

2 wildwind :
только WinApi, без MFC.
и ОГРОМНОЕ спасибо, идею понял !!!
Вернуться к началу
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Windows Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...