![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Margin и PopupMenu
Evgeny © (2002-01-11 13:39:00)Хотелось бы нарисовать полоску в PopupMenu (как в кнопке пуск). Вроде все просто - лови WM_DRAWITEM и обрабатывай. Но это сообщение дает Rect на конкретный Item, а требуется узнать Rect на все меню. Поделитесь у кого есть соображения на сей счет. А может есть какие другие идеи.
Evgeny (2002-01-15 14:40:00) [1]>Gennady.
Спасибо. Пример получил, вечером поковыряю.
>nikkie.
Мои изыскания.
В MeasureItem увеличиваем ширину меню на размер полоски:
if lpmis.CtlType = ODT_MENU then
if MarginLeft > 0 then
inc(lpmis.itemWidth, MarginLeft + 1);
а в DrawItem можно отрисовать:
if lpdis.itemAction = ODA_DRAWENTIRE then
begin
GetClipBox(lpdis.hDC, MarginRect);
MarginRect.Right := MarginLeft;
FillBkGradient(lpdis.hDC, MarginRect, $808080, $000000, 32, flTop);
end;
Ну остались в принципе мелочи.
nikkie (2002-01-14 20:36:00) [2]>Evgeny
вроде бы стандартно они такого же размера как и все остальные пункты меню.
но зачем их узнавать? ты на них собираешься рисовать? тогда они будут стиля MF_OWNERDRAW и их размер ты сам определишь на WM_MEASUREITEM.
Igor_thief (2002-01-14 19:53:00) [3]Народ, а киньте и мне такой исходник. Буду очень благодарен.
Evgeny (2002-01-12 08:34:00) [4]>Gennady
Afro@sibovk.omskcity.com
Evgeny (2002-01-12 07:28:00) [5]>nikkie
Каким образом тогда узнать размеры пунктов MF_SEPARATOR
Gennady (2002-01-11 17:44:00) [6]дай адрес, вышлю пример
nikkie (2002-01-11 16:03:00) [7]разрезать картинки на n кусочков (n - количество пунктов в меню). на WM_DRAWITEM отрисовывать соответствующую часть картинки.