Установка флажка собственного меню


Вы не сможете задать собственный (нарисованный пользователем) пункт меню в файле определения ресурса вашей прикладной программы. Вместо этого, Вы должны создать новый пункт меню или модифицировать существующий при помощи использования флажка меню MFT_OWNERDRAW.

Вы можете использовать функцию InsertMenuItem или SetMenuItemInfo, чтобы определить собственный пункт меню. Используйте InsertMenuItem, чтобы вставить новый пункт меню в заданной позиции в строке меню или меню. Используйте SetMenuItemInfo, чтобы изменить содержание меню.

При вызове этих двух функций, Вы должны определить указатель на структуру MENUITEMINFO, которая описывает свойства нового пункта меню или свойства, которые Вы желаете изменить у существующего пункта меню. Чтобы сделать пункт меню, собственным пунктом, определите значение MIIM_TYPE для члена fMask и значение MFT_OWNERDRAW для члена fType этой структуры.

Устанавливая соответствующие члены структуры MENUITEMINFO, Вы можете связывать заданное программой значение, которое называется данными пункта (item data), с каждым пунктом меню. Поступая таким образом, установите значение MIIM_DATA в члене fMask и определяемого программой значение в члене dwItemData этой структуры.

Вы можете использовать данные пункта с любым типом пункта меню, но это особенно полезно для собственных пунктов. Например, допустим, что структура содержит информацию, используемую, чтобы нарисовать пункт меню. Прикладная программа может использовать эти данные для пункта меню, чтобы сохранить указатель на структуру. Данные пункта отправляются в окно владельца меню с сообщениями WM_DRAWITEM и WM_MEASUREITEM. Чтобы в любое время извлечь данные о пункте для меню, используйте функцию GetMenuItemInfo.

Прикладные программы, написанные для ранних версий системы, могут продолжать вызывать функции AppendMenu, InsertMenu или ModifyMenu, чтобы назначить флажок MF_OWNERDRAW собственному  пункту меню.

Когда Вы вызываете какую-либо из этих трех функций, Вы можете передать  значение как параметр lpNewItem. Это значение может представлять любую информацию, которая является значимой для вашей прикладной программы, и которая должна быть доступна вашему приложению, когда пункт должен отобразиться на экране. Например, значение может содержать указатель на структуру; структура, в свою очередь, может содержать текстовую строку и дескриптор логического шрифта, который ваша прикладная программа будет использовать, чтобы прописать строку.

Назад в оглавление
На главную страницу

Hosted by uCoz