Конференция "KOL" » Как установить ширину PopupMenu при OwnerDraw = True
 
  • L`Autour © (04.08.08 07:38) [0]
    Если вручную прорисовываю отдельные элементы меню, то ширина всего меню, определяется остальными элементами меню, иначе в качестве меню получаю узкую полоску.

    И еще, если я делаю ручную прорисовку некоторых элементов меню своим шрифтом, то у остальных элементов при их первой прорисовке он сохраняется. Восстанавление шрифта на дефолтный происходит, только если над пунктом меню провести мышкой.
  • L`Autour © (07.08.08 07:20) [1]
    Все в отпусках?
  • mdw © (07.08.08 10:08) [2]
    Если правильно понял вопрос, то Вам нужно обрабатывать OnMeasureItem, а там Result:= MAKELONG(H, W).
  • mdw © (07.08.08 10:15) [3]
    По поводу второго, нужно смотреть как рисуете. Возможно не восстанавливаете шрифт после отрисовки.
  • L`Autour © (08.08.08 08:45) [4]
    первое попробую

    по второму -  я пробовал просто удалять свой шрифт из DC-контектста меню (после моей обработки вывода),  но это не помагало.
  • mdw © (08.08.08 10:23) [5]

    > по второму -  я пробовал просто удалять свой шрифт из DC-
    > контектста меню (после моей обработки вывода),  но это не
    > помагало.

    А старый восстанавливали? Должно быть примерно так:

    var Font, OldFont: HFONT;
    ....
         OldFont:= SelectObject(DC, Font);
    .........
         SelectObject(DC, OldFont);
         DeleteObject(Font);
  • L`Autour © (08.08.08 13:45) [6]
    сенк
  • L`Aurtour (09.08.08 07:58) [7]
    DeleteObject(Font); - оказался лишним
  • MTsv DN (09.08.08 12:29) [8]
    > DeleteObject(Font); - оказался лишним
    Не думаю. Память надо беречь 8)
  • L`Autour © (11.08.08 06:52) [9]
    С памятью нормально - просто я забыл сказать, что шрифт свой шрифт создаю и уничтожаю при создании и удалении формы. А здесь его только к контексту цепляю.
 
Конференция "KOL" » Как установить ширину PopupMenu при OwnerDraw = True
Есть новые Нет новых   [134431   +15][b:0][p:0]