![]() |
|
![]() ![]() ![]() |
|
serg405 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 118 Регистрация: 12.6.2008 Репутация: нет Всего: нет |
Здраствуйте!
я пишу разшыреный клас от СButton (class CRadioButtonEx: public CButton) для радио баттона... не могу перехватить сообщения изменения состояния (check/uncheck), в функции DrawItem. Также не знаю как получить сообщения об (check/uncheck) через MESSAGE MAP. SetCheck я сделал через обработку ON_WM_LBUTTONDOWN, проблема в том что когда есть група радиобаттонс то я не могу определить в какой момент кнопка стала uncheck в следствии установки в check другой кнопки. |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Проще всего, мне кажется, перехватить уведомление, посылаемое паренту в момент нажатия на кнопку. Т.е. воспользоваться reflecting. Вкратце: пишешь обработчик команды на кнопке, в карту обработчиков вставляешь ON_CONTROL_REFLECT, а лучше ON_CONTROL_REFLECT_EX с возвратом FALSE, чтобы твоя кнопка таки отсылала уведомление родителю. И работать это будет только в оболочке MFC.
Что касается второй части вопроса, то дело, видимо, в том, что ты делаешь кнопку OWNERDRAW, а этот стиль несовместим с прочими (т.е. OWNERDRAW-кнопка может быть только push-button, но никак не check\radio). Отсюда вывод: необходимую функциональность придется имитировать, т.е. самому следить за кнопками-соседями. -------------------- ... |
|||
|
||||
SergMilk |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 29.4.2009 Репутация: нет Всего: нет |
Привет!
У кого-нибудь была проблема с ClassWizard в Visual Studio 6 при использовании MFC Radio Button Control ? У меня такая ерунда, что через ClassWizard именно этому элементу управления я не могу автоматом назначить переменные члены m_RadioValue и m_RadioCtrl Пробовал добавлять вручную, взяв за аналогию CheckBox, (для которого всё добавляется через ClassWizard), но методы DDX_Check и DDXRadio отличаются. Какого типа должна быть переменная m_RadioValue? Пробовал делать ее
но тогда:
Кто пользовался RadioButton, подскажите, пожалуйста ![]() P.S. Привожу реализацию DDX_Check и DDX_Radio
Это сообщение отредактировал(а) SergMilk - 11.8.2009, 21:29 |
||||||
|
|||||||
Albor |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 589 Регистрация: 28.2.2009 Репутация: 7 Всего: 9 |
SergMilk, начнём с того что радиокнопка не используется в одиночку. Поставь групповой стиль для первой кнопки в группе и переходи в визард. Теперь можно добавить переменную либо int, либо CButton
|
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Кроме того, на группу радиоконопок заводится ровно одна переменная, типа int. Она равно номеру выбранной в группе опции. Соответственно, DDX_Radio ровно это и делаеn: присваивает\ устанавливает переменную в зависимости от выбранной в группе опции. В диалоге все кнопки группы должны идти по-порядку (z-order); первая должна иметь стиль WS_GROUP, остальные - не иметь его; первый контрол за последней кнопкой - опять иметь - как бы замыкаем группу. На самом деле между радио-кнопками можно вставлять всякие зависимые поля, но тогда тоже без стиля WS_GROUP.
Если опций 2 и они имеют семантику "делать \ не делать", то можно использовать переменную BOOL. -------------------- ... |
|||
|
||||
SergMilk |
|
|||
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 29.4.2009 Репутация: нет Всего: нет |
Ооооо, круть! Спасибо!!
|
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |