Получение ширины области значков контекстного меню - PullRequest
0 голосов
/ 29 апреля 2011

Мне нужно получить ширину области значков контекстного меню с помощью Windows API (> = Windows XP, если это имеет значение).Что я имею в виду под областью значков, которую вы можете видеть в , в этом вопросе есть изображение .Это пространство, зарезервированное для значков в левой части меню.

Я просканировал множество информации, которую можно получить через SystemParametersInfo и GetSystemMetrics , но нашелничего такого.Но должно быть какое-то значение по умолчанию, верно?Как я мог получить это?

1 Ответ

2 голосов
/ 29 апреля 2011

Собственное меню win32 на самом деле не поддерживает значки, поэтому вы не можете назвать его областью значков.В базовом меню размер этой области составляет SM_CXMENUCHECK (вероятно, плюс SM_CXEDGE для заполнения). Для Vista + вы можете найти лучшие показатели с помощью констант MENU_POPUP * и GetThemeInt.AFAIK точные макеты и константы границ, необходимые для репликации классических меню Win95 +, не документированы.

Поскольку вы говорите о значках, я предполагаю, что вы хотите добавить значки в ваше меню, поэтому ваша ширина должна быть максимальной (yourIconWidth, GetSystemMetrics(SM_CXMENUCHECK)) + отступы. Эта старая статья MSJ , вероятно, является лучшим руководством по рисованию для владельцев меню, и у codeproject есть собственный раздел статьи меню с несколькими различными реализациями рисования для владельцев.(MS Office и Visual Studio также используют пользовательские вещи)

В заключение, поскольку вы сказали, что XP +, вы должны иметь возможность использовать HBMMENU_CALLBACK и беспокоиться только о значке, а не об остальном рисунке меню..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...