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