Ламерский вопрос про radio botton

migel

как его юзать?
// у меня есть переключатель из 2х боттонов, как мне в программе проверить какой из них кликнут? И как запустить определенную ф-цию (мою) при нажатии на каждый из них?

feliks28

Написать соответствующий код на нужном языке?

bleyman

Попроси юзера ввести в текстбокс номер нажатого радиобаттона.

karkar

Проверить:
IsDlgButtonChecked(hwndDlg, IDC_YOURBUTTON);
Нажатие: в ClassWizard'e делаешь обработчик BN_CLICKED для этого радиобаттона.

Elina74

Тыкнуть кнопку на форму.
Два раза кликнуть на кнопку.
Написать, что должно происходить при нажатии на кнопку.

migel

Спасибо!

migel

По некоторым соображениям не могу его использовать (class wizard)
А по-другому как-то можно отследить нажатие на радио боттон?

bastii

да ты хоть напиши на чем пишешь

migel


а да, действительно, совсем забыл
на С, в 6м студио

migel

и еще вопрос, как один из этих переключателей сделать кликнутым по умолчанию?
полазил, в свойствах вроде такого нет...

maggi14

SetChecked, если я правильно помню

migel

а это где такое?
я кликал на пропертис боттона - там такого нет.

migel

п..с. сорри фо май бед инглиш

maggi14

это метод. у CRadioButton в MFC.
Я могу ошибиться с конкретным названием: нет МСДН, - но что-то подобное

migel

Да в том-то и дело, что нет у меня никакого CRadioBottoma!, т.к. в этой проге не используется class wizard, я просто нарисовал кнопку в окне и все.

bleyman

То есть ты используешь чистый винапи?
RTFM!
Тебе уже сказали функцию IsDlgButtonChecked.
В хелпе внизу есть
а) название функции выставляющей чекстейт
б) ссылка на страничку со всеми функциями относящимися к баттонам.

migel

да, видимо..
только я не понимаю механизма что происходит при клике на ботон, по идее генерится какой-то мессадж, правильно? но где и как его задать....

maggi14

а хрен ли разница? Сделай то же самое, что делает классвизард. Свяжи с ID ресурса класс CRadioButton

Bird_V

А Spy++ запустить не судьба и посмотреть, что генерится?
Скорее всего, WM_CLICK и генерится...

bleyman

Значиццо это... Ты точно на чистом АПИ программируешь, да? Щаз организую у тебя в голове ясность.
Все твои контролы и окошки принадлежат винде. Они не твои. Мессаги генерит винда. Объекты есть у винды.
Ты можешь
а) говорить своему контролу (ну он типа как бы твой, потому что ты попросил его создать) "сделай с собой вот это" - посылая WM_SETTEXT (например) или через апи SetText (которая является обёрткой для мессаги, на самом деле).
б) оверрайдить у контрола WndProc (достаточно нетривиальная задача) и реагировать на мессаги самому. К счастью, общая архитектура организована таким образом, что практически все важные мессаги пролетают через WndProc окошка, поэтому как правило хватает оверрайда там.
Ещё раз подчеркну - в чистом апи у тебя нет объектов - только хэндлы, которые ты передаёшь в различные "настоящие" апи (типа сендМессидж) или обёртки (типа сетТекст).
Хочешь ООП - используй МФЦ, где написаны объекты - обёртки над апи, инкапсулирующие хэндлы. И много других кустомизированных объектов.
Хотя лично я бы не советовал использовать мфц вообще никогда, потому что говно.
Оставить комментарий
Имя или ник:
Комментарий: