Ищем диаграмму перехода состояний для жизненного цикла немодальных диалогов MFC

Я пытаюсь исправить или заменить какой-то устаревший код в приложении C++ MFC, которое управляет картой перечислений, чтобы открыть (или еще не открывать) дочерние немодальные диалоги. Текущий код делает неверные предположения, приводящие к ошибкам и сбоям.

Я ищу диаграмму переходов между состояниями (либо от Microsoft, либо из блога или статьи), чтобы убедиться, что мой заменяющий код правильно обрабатывает все возможные переходы состояний (открытие, начало закрытия, закрытие отменено и т. Д.), Которые может происходить с немодальным диалогом MFC.

Устаревший код отображения предполагает, что закрытие диалога всегда происходит успешно (это не так), дочерний код предполагает, что менеджер все еще помнит, кто он (а может и нет), и повторный вход обрабатывается менеджером и дочерним элементом, взаимно перекрывающими друг друга foo->public_private_member = 0; пока не будет достигнута фиксированная точка.

В отличие от этого, я считаю, что правильный подход заключается в том, что менеджеру необходимо отслеживать как минимум три состояния для каждого ребенка: open, closing, а также closed, Только дочерний диалог должен выполнять closing --> closed переход состояния (потому что это может быть отменено или отложено).

Чтобы синхронизировать мои простые конечные автоматы с состоянием диалогов MFC, мне нужно знать правильные места для размещения моих "хуков" (какие виртуальные методы нужно переопределить или сообщения для обработки).

Я могу понять некоторые из них по здравому смыслу, но есть несколько вещей, которые я не знаю, на которые, я думаю, могла бы ответить диаграмма:

  1. Как я знаю, что моя ментальная модель жизненного цикла диалога MFC верна?
  2. Как я узнаю, нашел ли я все места, которые мне нужны, чтобы перехватывать события?
  3. Между двумя сообщениями или виртуальными методами, которые оба запускаются во время события, которое является наиболее подходящим для использования, и достаточно ли одного или есть пути, которые обходят один или другой?

Мне удалось найти кусочки этой информации в виде текстовой документации и советов, но я до сих пор не смог найти диаграмму.

0 ответов

Другие вопросы по тегам