Фоновый рисунок в TListBox
При этом Итемы рисуются вручную. Интересует, какое событие стандартного ListBox-а надо перехватить перед рисованием фона. Желательно, помочь кодом, но и теорию приму с удовольствием.
Цитата:
Originally posted by Shurup
Нужно создать новый компонент (модифицировать стандартный ЛистБокс, вставив ему фоновую картинку).
При этом Итемы рисуются вручную. Интересует, какое событие стандартного ListBox-а надо перехватить перед рисованием фона. Желательно, помочь кодом, но и теорию приму с удовольствием.
Нужно создать новый компонент (модифицировать стандартный ЛистБокс, вставив ему фоновую картинку).
При этом Итемы рисуются вручную. Интересует, какое событие стандартного ListBox-а надо перехватить перед рисованием фона. Желательно, помочь кодом, но и теорию приму с удовольствием.
Свойство ListBox'а ставишь в lbOwnerDrawVariable и событие OnDrawItem будет вызываться каждый раз при прорисовке i-го элемента.
В этом событии просто рисуешь кусок картинки, а поверх него - текст, сответственно CopyRect метод канвы и DrawText Api функция.
Цитата:
Originally posted by hardcase
Свойство ListBox'а ставишь в lbOwnerDrawVariable и событие OnDrawItem будет вызываться каждый раз при прорисовке i-го элемента.
В этом событии просто рисуешь кусок картинки, а поверх него - текст, сответственно CopyRect метод канвы и DrawText Api функция.
Свойство ListBox'а ставишь в lbOwnerDrawVariable и событие OnDrawItem будет вызываться каждый раз при прорисовке i-го элемента.
В этом событии просто рисуешь кусок картинки, а поверх него - текст, сответственно CopyRect метод канвы и DrawText Api функция.
Именно так и делаю. Проблема в таком случае - фоновое изображение рисуется только на ттом участке компонента, где есть итемы, а надо чтоб на всем компоненте.
Пробовал отлавливать сообщение WM_PAINT, но тогда иногда затираются item-ы.
Все-равно, спасибо!
Цитата:
Originally posted by Shurup
Именно так и делаю. Проблема в таком случае - фоновое изображение рисуется только на ттом участке компонента, где есть итемы, а надо чтоб на всем компоненте.
Пробовал отлавливать сообщение WM_PAINT, но тогда иногда затираются item-ы.
Все-равно, спасибо!
Именно так и делаю. Проблема в таком случае - фоновое изображение рисуется только на ттом участке компонента, где есть итемы, а надо чтоб на всем компоненте.
Пробовал отлавливать сообщение WM_PAINT, но тогда иногда затираются item-ы.
Все-равно, спасибо!
Можно, конечно, фиксировать, что нарисовано, а потом недостающее дорисовать, но, думаю лучше будет если на WM_PAINT отрисовать всю фоновую картинку, и передать дальше - на отрисовку элементов.
Цитата:
Originally posted by hardcase
... и передать дальше - на отрисовку элементов.
... и передать дальше - на отрисовку элементов.
А как это собственно сделать?