owner
DrawItem ?
Заинтриговался. Меня тоже давно удивляло, почему же не удается в новых версиях откомпилировать DemoMenuMeasureItem, чтобы меню вело себя как 8 лет назад в скомпилированном в версии 154 проекте.
Выяснилось вот что: В те времена MCK генерировал присваивание
MainMenu1.Items[ miKind ].OwnerDraw := TRUE;
в Unit_1.inc (немного не так:
Result.MainMenu1.Items[ 1 ].OwnerDraw := TRUE;
, но суть та). Теперь этот код для подменю вообще не генерируется, а установка OwnerDraw для всего меню генерирует эти присваивания для пунктов меню верхнего уровня, что совсем не правильно.
В общем, если присваивание выше добавить в OnCreate, и не назначать OwnerDraw на все меню, то все становится совсем как в скомпилированном демо.
Насчет сообщений WM_MeasureItem: они приходят для субменю при первом показе родительского пункта, когда действительно надо измерить дочерние пункты, так в Windows сделано изначально.