Вопрос

Одним из стандартных меню, предоставляемых приложению «Документ/Просмотр» в MFC, является меню Windows.Он предоставляет такие возможности, как мозаичное и каскадное расположение окон, а также добавляет нумерованный список доступных на данный момент представлений в конце меню.Проблема в том, что иногда это не так, и мне хотелось бы знать, почему.Более конкретно, я хотел бы знать, как обновить этот список, поскольку я хотел бы использовать его в инструменте автоматизации графического пользовательского интерфейса.Обычно список есть, иногда его нет, кто-нибудь знает почему?Я предполагаю, что глубоко внутри класса CFrameWnd есть функция, которая заботится об этом, но я не могу ее найти.

Редактировать: Я также использую библиотеку Stingray для графического интерфейса, что вполне может повлиять на проблему.

Это было полезно?

Решение

Обновление меню и заголовка окна выполняется отдельно двумя способами.

  • CFrameWnd::OnUpdateFrameMenu(..) актуализирует только меню фрейма,
  • CFrameWnd::OnUpdateFrameTitle(..) обновляет только имя кадра.

Думаю где-то неправильный порядок вызова и обновление заголовка будет позже обновления меню.В конце концов, заголовок в меню «Окно» иногда остается пустой строкой.

Самый простой способ ремонта – использовать GetActiveFrame()->ActivateFrame() вызов метода.Он немедленно обновит фактическое окно фрейма, а также принадлежащее ему меню «Окно».Его можно использовать после создания CDocument и CView.Лучшее место, куда можно позвонить, это конец OnFileNew, OnFileOpen переопределенные методы класса приложения (CWin)App.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top