Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2006.06.04;
Скачать: [xml.tar.bz2];

Вниз

Сабклассинг TListBox - не ловится WM_DRAWITEM   Найти похожие ветки 

 
wild sam   (2006-03-15 01:29) [0]

Здравствуйте. Хочу избавиться от рисования FocusedRect в TListBoxe c OwnerDraw. Наследника писать не хотелось, поэтому решил засабклассить и перекрыть WM_DRAWITEM. Проблема в том, что в новой оконной процедуре оно не появляется. Все остальные  - WM_NCPAINT, например, срабатывают. WM_DRAWITEM - нет. Что это может быть?

Спасибо!


 
Джо ©   (2006-03-15 01:33) [1]

> Хочу избавиться от рисования FocusedRect в TListBoxe c OwnerDraw

Так что мешает сделать в таком роде:


procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
 Rect: TRect; State: TOwnerDrawState);
begin
 with TListBox(Control).Canvas do
 begin
   if odSelected in State then
   begin
     Brush.Color := clActiveCaption;
     Font.Color := clHighlightText;
   end
   else
   begin
     Brush.Color := clWindow;
     Font.Color := clWindowText;
   end;
   ListBox1.Canvas. FillRect (Rect);

   TextOut(Rect.Left,Rect.Top,TListBox(Control).Items[Index]);

   // рамку затираем только на выделенной строке
   if (odSelected in State) and (odFocused in State) then
     DrawFocusRect (Rect);
 end;
end;


 
wild sam   (2006-03-15 01:45) [2]

Упс. Это, действительно, работает :) Я читал про XOR при выводе  DrawFocusRect, но реализовать не получилось. Решил, что придется делать сложно.

Спасибо большое!


 
clickmaker ©   (2006-03-15 12:05) [3]


> wild sam   (15.03.06 01:45) [2]

для справки: wm_drawitem посылается родителю листбокса


 
wild sam   (2006-03-15 18:13) [4]

Да, я в курсе. Пробовал перехватывать и  cn_drawitem - тот же результат.



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

Форум: "WinAPI";
Текущий архив: 2006.06.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.038 c
15-1146908184
Ламот
2006-05-06 13:36
2006.06.04
проблемы со SCSI RAID Intel SRCZCRX


15-1146904170
IronHawk
2006-05-06 12:29
2006.06.04
XML & XSLT шаблоны, где глюк в стыковке?


2-1147782849
pathfinder
2006-05-16 16:34
2006.06.04
Определение кодировки?


15-1146756580
n_n_n
2006-05-04 19:29
2006.06.04
25 порт, Outlook


3-1144942221
{Alex}
2006-04-13 19:30
2006.06.04
Вывести запрост в Memo





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский