Ну как нет? Система даёт команду закрыть все окна. А закрывает В, В закрывает С. Если С может закрыться (bWasModified = false), то оно закрывается и В тоже смотрит, может ли оно теперь закрыться и тд до А автоматически. Если пользователь не сделал изменений, то все окна "чисто" закроются. Конечно, если диалог не может быть закрыт по той или иной причине, то он должен об этом сообщить. А говорить пользователю о необходимости закрыть все открытые и находящиеся незнамо где в цепочке окна это как-то... Я бы лично такую прогу сразу удалил бы. Тем более, что чисто алгоритмически это некрасиво - откуда А знает, что есть С?
Вассал моего вассала - не мой вассал.