MFC: мастер классов редактора ресурсов Visual Studio не имеет всех идентификаторов элементов управления в переменных-членах
Я сталкивался с этим несколько раз, не помню, что я сделал, чтобы исправить это в прошлый раз (вероятно, начал все сначала). Вот что я сделал:
Я скопировал существующий CMFCPropertySheet
диалоговое окно и вставлено как новое, затем отредактировал идентификатор диалогового окна на IDD_MINE, удалил все элементы управления в качестве исходного места. Затем я добавил различные элементы управления для этого диалога.
После настройки диалогового окна так, как я хотел, я перешел к "Добавить класс" и добавил класс для диалогового окна (выбрав базовый класс CMFCPropertySheet
). Когда это было сделано, это было неправильно (VS2017 никогда не делал для меня правильную страницу свойств). Ссылаясь на другую страницу свойств, над которой я работал, я добавил отсутствующий IDD_MINE в конструктор и AFX_DESIGN_TIME { enum IDD=IDD_MINE }.
Как только класс был настроен, я был готов начать добавлять переменные. Однако я заметил, что некоторые из элементов управления, которые были флажком, должны были быть переключателями, поэтому я удалил их, создал переключатели (например, нажал), затем выбрал существующие имена IDC_ (старые имена флажков) из раскрывающегося списка для идентификатора элемента управления. Затем я пытаюсь добавить первый переключатель в качестве переменной значения, но это не удается со следующей ошибкой:
В экземпляре объекта не задана ссылка на объект.
Итак, я перехожу к мастеру классов для диалога и просматриваю вкладку "Переменные-члены". В нем перечислены все идентификаторы элементов управления, кроме переключателей (и элементов IDC_STATIC, которые имеют значение -1) . Я попытался переименовать радиокнопки, изменив имена IDC_, но это ничего не изменило (программа выхода и т. Д., Все та же).
Так кто-нибудь знает, как мне вернуть визуальный редактор ресурсов stdio / мастер классов обратно в синхронизацию с реально существующими элементами управления, чтобы я мог добавить их с помощью мастера?
ТИА!!
РЕДАКТИРОВАТЬ:
Даже те переменные, которые существуют на вкладке "Переменные-члены", не могут использоваться с мастером. Ссылка на тот же объект не установлена для экземпляра объектного сообщения.
В отчаянии я вручную добавил функцию:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
Теперь все работает!!
Который волшебник позаботится обо всем в одиночку.