У меня есть приложение MDI. Это было разработано за эти годы. На Windows-7 все выглядит родным. Когда я запускаю приложение на windows-10, обычные диалоги будут иметь вид windows-10 & Чувствовать. Но все дочерние представления по-прежнему выглядят как Windows-7 & Чувствовать.
Я пытался перейти с CMDIChildWnd на CMDIChildWndEx, но это не имело никакого значения для вида окна & чувствовать (за исключением другого стиля рамки вокруг прямоугольника клиента). Я не хочу менять все дочерние представления на панели док-станции, поскольку это сильно изменит пользовательский опыт. Я просто хочу иметь родной вид & чувствую к ребенку взгляды.
Это вообще возможно? Могу ли я легко перейти на окна докеров и настроить их так, чтобы они вели себя как обычные окна (вообще без функции стыковки, кнопки min / max / restore)?
По умолчанию это не сделано. Реализация по умолчанию для дочерних окон MDI просто рисует окна в старом стиле.
При просмотре исходного кода MFC Next, должно быть возможно реализовать его через OnNcPaint.
CMDIChildWndEx уже реализует OnNcPaint. И когда вы используете стиль, который возвращает TRUE в CMFCVisualManager :: GetInstance () -> IsOwnerDrawCaption (), заголовок и рамка уже нарисованы визуальным менеджером.
Все компоненты есть. Может быть, этого достаточно, чтобы m_Impl.OnNcPaint всегда вызывался. Поэтому создайте свой собственный класс окна MDI Child и заставьте систему MDI использовать его. (Смотрите ваш класс шаблона документа).
Если этого недостаточно, вы можете вызвать все компоненты визуализатора, чтобы нарисовать рамку самостоятельно.
PS: я только что перепроверил это в реализации BCG, и я смог показать дочерние окна MDI в другом стиле.
Других решений пока нет …