После многих лет работы в C # я вернулся к старому приложению MFC, которое я написал. Но, похоже, мне нужно освежиться в нескольких вещах.
Я добавил флажок управления в существующее диалоговое окно. Затем я использовал Class Wizard для добавления неуправляемой переменной типа bool
, Переменная была создана, как и ожидалось.
Тем не менее, я вижу, что запись не была добавлена к DoDataExchange()
метод. И когда я попытался добавить его вручную:
DDX_Check(pDX, IDC_PRINT_SUMMARY, m_bPrintSummary);
Я получаю ошибку IntelliSense:
ссылка типа «int &»(не является константным) не может быть инициализирован значением типа» bool «
1. Почему не было записи в DoDataExchange()
создан для меня, когда я добавил переменную?
2. Если DDX_Check()
ожидает и int &
почему мастера классов по умолчанию набирают bool
для значения флажка?
Флажок может иметь одно из трех значений, поэтому необходимо указывать значение int.
BST_CHECKED
— Кнопка проверена.
BST_INDETERMINATE
— Кнопка отображается серым цветом, что указывает на неопределенное состояние (применяется, только если кнопка имеет стиль BS_3STATE или BS_AUTO3STATE).
BST_UNCHECKED
— Кнопка очищена
Что касается того, почему это не автоматическое редактирование DoDataExchange, это, вероятно, проблема с форматированием C ++ вашего класса.
Других решений пока нет …