Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как сохранять button нажатым после перевода фокуса?  (Прочитано 5543 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Вад
Модератор

ru
Offline Offline
Пол: Мужской

« : 30-06-2007 20:10 » 

Проблема такая:
Требуется оставлять стандартный button нажатым после перевода фокуса на другой элемент окна (как это выглядит на панели дисков DrWeb или TotalCommander). Но, в отличие от DrWeb и TotalCmd, хочется иметь возможность не только удерживать одну из ряда кнопок нажатой, но также по повторному нажатию на уже нажатую кнопку возвращать её в нормальное состояние (кроме того, похоже, что в упомянутых программах кнопки сделаны через какой-то контрол в духе TabCtrl, по крайней мере, Spy++ выявляет только контрол панели кнопок).
Пробовал стандартный стиль BS_PUSHLIKE для кнопки и установку статуса в BM_SETSTATE по клику, но после перевода фокуса на другой элемент приходит ещё одна нотификация BN_CLICKED для данной кнопки, после чего происходит её воврат в ненажатое состояние.
Кто-нибудь сталкивался с подобной задачей? Пока мысль пошла только в направлении ownerdraw и создания своего контрола, но, может, есть какое-то более простое решение на стандартных кнопках? Кроме того, даже в случае ownerdraw, смущает повторное сообщение BN_CLICKED при переводе фокуса, например, табом - пока не представляю, как отличить, был ли это клик по кнопке, или вызов при потере фокуса.
Буду благодарен за любую помощь.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #1 : 01-07-2007 03:44 » 

Вад, используй контрол Check Box в режиме  Push Like

программно нажать -
CButton::SetCheck(...)
Записан

Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 01-07-2007 10:51 » 

Во, то, что надо! Спасибо! К моему стыду, описание стиля BS_PUSHLIKE читал невнимательно...
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines