Групповое поле с заголовком в качестве флажка
-
20-08-2019 - |
Вопрос
Я использую Visual Studio 6.0 (VC++ с MFC) на платформе Windows XP.Я пытаюсь создать групповое поле с заголовком группового поля в качестве флажка.Мое намерение таково:Если флажок установлен, элементы управления внутри группового поля должны быть включены;или еще отключен.
Возможно ли это осуществить?Если да, пожалуйста, дайте мне несколько указаний.
Спасибо.
Решение
Есть несколько вещей, которые вы можете попробовать, в зависимости от того, насколько вы хотите придерживаться своей идеи и сколько труда вы готовы приложить для этого:
Простой метод
Используйте обычный групповой блок, а затем внутри него сделайте первый элемент флажком.Этого легко добиться, но вы теряете цель использовать флажок в качестве заголовка.
Необычный метод рисования 1
Используйте обычное групповое поле, а затем в месте, где, как вы знаете, должен быть заголовок, установите флажок.Вам придется выполнить некоторые сложные расчеты, чтобы он хорошо вписывался и хорошо рисовался без мерцания.
Необычный метод рисования 2
Используйте какую-либо форму суперкласс или подкласс/подкласс в групповом поле.Вы можете переопределить обработчик WM_PAINT, чтобы рисовать только рамку для группового поля.Поместите обычный флажок в том месте, где, как вы знаете, должен быть заголовок.Это должно работать лучше, потому что у вас будет больше контроля над рисунком, но, вероятно, будет сложно сделать все правильно.По моему опыту, создание подклассов сопряжено с меньшим риском, чем создание суперклассов.
Другие советы
Используете ли вы редактор диалогов?Если да, поставьте групповой флажок.Далее поверх него поставьте флажок над линией группового поля.Отредактируйте ресурс, чтобы установить Z-порядок, или сделайте это в коде.Вы хотите, чтобы флажок находился над групповым полем.Добавьте обработчик для флажка и включите/выключите элементы управления в зависимости от состояния флажка.
Несколько лет назад я написал программу под названием CGroupCheck, и она доступна на CodeProject: http://www.codeproject.com/KB/buttons/groupcheck123.aspx