Советы по Delphi

       

Слияние MDI-меню


Delphi не совсем корректно производит объединение меню в MDI приложениях. Если окно MDIChild максимально развернуто, и добавляется другое окно MDIChild, управляющее MDIChild меню (родительское основное меню) или исчезает совсем, или делает это на момент нажатия на него.

По всей видимости, для слияния меню Delphi использует InsertMenu() с MF_POSITION. Тем не менее, если дочернее MDI-окно максимально развернуто, Popup меню добавляется к меню MDI-приложения, вставляясь на одну позицию дальше, чем необходимо. Это стандартное поведение системы, поскольку системное меню активного дочернего окна включается в первую позицию панели меню MDI-окна.

Согласно WinSDK, если активное дочернее окно максимально развертывается, вставляется новое popup-меню, при этом к значению позиции добавляется 1 (единица). [000346]



Содержание раздела