У меня есть два небольших вопроса в технологии программирования Visual Studio MFC-GUI, касающийся обработки группы переключателей в VS2015 CE.MFC-переключатель группового сообщения обработчик
У меня есть небольшое диалоговое приложение. Это приложение рисует некоторые строки в моем диалоговом окне с указанным пером. Теперь я сделал группу переключателей, чтобы иметь возможность использовать разные цвета для пера. Поэтому я создал поле группы, поместил радиокнопки в это групповое окно, включил свойство группы первого переключателя и проверил последовательность табуляции, чтобы все переключатели были правильно в последовательности.
Это нормально - тестирование GUI. Я могу выбрать только один из переключателей, как и планировалось, потому что я не смог бы провести линию в разные цвета одновременно. Теперь я добавил обработчик для сообщения BN_CLICKED первого объекта переключателя в ClassWizard, чтобы добавить выбор различных цветных ручек.
Теперь идет интересная часть. Этот обработчик выполняется только тогда, когда я нажимаю первый переключатель. Включен объект с включенным групповым свойством. Я думал, что он должен выполняться всякий раз, когда я нажимаю любую из переключателей этой группы. Следующее, что я попробовал, это добавить BN_CLICKED-Message-манипулятор ко всем этим переключателям, но ClassWizard не отображает сообщение BN_CLICKED для других переключателей - только для тех, у кого включен групповой прокси.
После поиска в Интернете я прочитал сообщение о том, что можно было бы добавить BN_CLICKED-Messagehandler для кнопки, просто дважды щелкнув по нему в диалоговом окне. Поэтому я дважды щелкнул все мои переключатели и добавил вызов обработчика BN_CLICKED-Message первого переключателя. Это работает как обходной путь, так что теперь моя линия рисуется в разных цветах всякий раз, когда я нажимаю на любую из этих переключателей (черный, синий, красный и т. Д.).
У меня есть два вопроса - это поведение предназначено? Я полагаю, причина, по которой я могу только добавить BN_CLICKED-Messagehandler в ClassWizard для первого переключателя, заключается в том, что он будет вызываться любой из переключателей в моей группе, не так ли?
Другой вопрос: я бы предпочел написать обработчик один раз и дать возможность мастеру класса использовать этот конкретный обработчик вместо создания уникального обработчика для каждой из кнопок. Это не зависит от этих переключателей. Я протестировал это с помощью простого приложения, которое состоит из сборки нескольких кнопок - у которых могут быть свои собственные BN_CLICKED-Messagehandlers, прикрепленные мастером классов. Когда я не принимал автоматически сгенерированное имя функции от мастера и вводил имя моей собственной функции handler, он просто утверждает, что он не сможет перезаписать его. Как я могу выбрать существующий обработчик для сообщения объекта в мастере классов или это невозможно, и я должен сделать это вручную в коде для себя?
Надежда есть более VS2015 MFC Guy там быть в состоянии сказать мне ..
Просто добавьте обработчики вручную, он отлично работает. –
Между Visual Studio 6 и Visual Studio 2010 у нас не было мастера классов MFC. Это удобство, и вам нужно быть готовым написать код MFC без него. Jeff Prosise '[Программирование Windows с MFC, второе издание] (https://www.amazon.com/dp/1572316950) рекомендуется читать. Он объясняет, что стоит за всеми этими макросами и автоматически сгенерированным кодом. – IInspectable