Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.02.12;
Скачать: CL | DM;

Вниз

Что сделать с некорректной отрисовкой TCustomListBox?   Найти похожие ветки 

 
Aleksandr.   (2005-08-25 17:14) [0]

Точнее, я накатал объекта-потомка от этого класса, имеющего, в первую очередь, Style=lbOwnerDrawFixed и специфику отрисовки объектов своих итемов. При свойстве IntegralHeight=false отрисовка с таким стилем имеет неприятную особенность при некратности высот элементов высоте поля рисования оставлять пустую белую или черную полосу внизу за последним элементом (такое наблюдается и в Борландовском Object Inspector, кстати), а при IntegralHeight=true - не менее неприятную особенность вообще не заполнять ClientRect своего Parent, пока его высота не станет кратной высоте элемента.
Какие есть варианты управления отрисовкой объекта, чтобы избежать всего этого?
Я пытался отработать со стилем lbOwnerDrawVariable, но там проявилась другая ерунда - MeasureItem делает почему-то только один вызов для первого добавляемого элемента, после чего перед отрисовкой больше не вызывается.


 
Юрий Зотов ©   (2005-08-26 00:45) [1]

Из описания WM_MEASUREITEM в MSDN.

When the owner window receives the WM_MEASUREITEM message, the owner fills in the MEASUREITEMSTRUCT structure pointed to by the lpMeasureItem parameter of the message and returns; this informs the system of the dimensions of the control. If a list box or combo box is created with the LBS_OWNERDRAWVARIABLE or CBS_OWNERDRAWVARIABLE style, this message is sent to the owner for each item in the control; otherwise, this message is sent once.

The system sends the WM_MEASUREITEM message to the owner window of combo boxes and list boxes created with the OWNERDRAWFIXED style before sending the WM_INITDIALOG message. As a result, when the owner receives this message, the system has not yet determined the height and width of the font used in the control; function calls and calculations requiring these values should occur in the main function of the application or library.



Страницы: 1 вся ветка

Текущий архив: 2006.02.12;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.044 c
15-1138020310
dan317
2006-01-23 15:45
2006.02.12
список раскрывающихся абзацев : посоветуйте компонент


3-1134722249
Elena_
2005-12-16 11:37
2006.02.12
Как узнать , установлена ли IntrerBase или FireBird на машину


15-1137944178
Kerk
2006-01-22 18:36
2006.02.12
650летие Самары


15-1138013180
DmitriyR
2006-01-23 13:46
2006.02.12
Дали задание написать простой E-Mail сервер


15-1137339360
Piter
2006-01-15 18:36
2006.02.12
Я плакал :)) А это правда?