Мастер классов MFC не будет удалять переменную-член элемента управления

#c #mfc #visual-studio-2019 #classwizard

#c #mfc #visual-studio-2019 #classwizard

Вопрос:

Я использую VS 2019, работая на C . Я создал страницу свойств с несколькими полями со списком и элементами управления редактированием. По причинам, которые я не понимаю, редактор диалогового окна решил, что одна из «пользовательских» переменных-членов в классе была присоединена к одному из элементов управления Edit. Я имею в виду, что когда я запускаю мастер классов и перехожу на вкладку «Переменные-члены», он показывает, какой должна быть пользовательская переменная, прикрепленная к одному из элементов управления редактированием. Когда я выделяю ее и нажимаю «Удалить переменную», она ничего не делает. Вот что я пробовал:

  • Удалил переменную и подтвердил, что мастер классов больше не отображает ее. Верните его обратно, и он снова подключит его к элементу управления Edit.
  • Изменен тип переменной. Никакого эффекта.
  • Изменено имя переменной. Никакого эффекта.
  • В мастере классов я попытался добавить переменную через диалоговое окно «Добавить пользовательский». Он сообщает мне, что переменная уже существует.
  • Удалил и воссоздал элемент управления Edit. С другим идентификатором. Затем мастер показывает переменную-член как «пользовательскую». Однако, когда я меняю идентификатор обратно на исходный идентификатор, он автоматически снова связывает его с элементом управления Edit, поэтому я действительно не решил проблему.

Я не знаю, связано ли это, но когда я нажимаю «Удалить переменную», я всегда получаю всплывающее сообщение об ошибке, в котором говорится: «Индекс и длина должны ссылаться на местоположение в строке». Но я получаю это независимо от того, какую переменную я удаляю, а в других случаях она все равно удаляет переменную.

Кто-нибудь еще видел это? Есть ли способ вручную отключить удаление этой связи?

Комментарии:

1. Поскольку мастер классов не работает уже два десятилетия, я не успеваю за тем, что он делает. На уровне кода связь между членами класса и элементами управления пользовательского интерфейса выполняется изнутри DoDialogExchange реализации с помощью одной из DDX_ подпрограмм (см. TN026: DDX и DDV Подпрограммы для справки). Я не знаю, являются ли это единственными данными, которые мастер классов использует для определения ассоциаций.

2. Это похоже на ошибку в VS Class Wizard. Я мог бы легко воспроизвести это. Единственное, что нужно сделать, я думаю, это просто зайти в код и удалить все ссылки вручную.

3. Вы можете сообщить об этой проблеме сообществу разработчиков .

4. @MinxinYu-MSFT мастер классов стал практически непригодным для использования много лет назад, я полагаю, что последний, который работал должным образом, был в Visual Studio 6.0. Так что я не уверен, что MS когда-нибудь это исправит.

5. Вот мой прогноз: в отчете о потенциальном дефекте бот в конечном итоге оставит следующий ответ: «Я обнаружил, что эта проблема не получила большого количества активности, голосов или комментариев […], по моему опыту, эта проблема вряд ли будет исправлена». Microsoft не заботится обольше нет его собственной платформы разработчика. Количество пренебрежения ошеломляет.