Форум программистов, компьютерный форум CyberForum.ru

Разноцветный текст в ListBox - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.94
max-@
0 / 0 / 0
Регистрация: 22.03.2011
Сообщений: 68
30.03.2011, 02:46     Разноцветный текст в ListBox #1
У меня даже нет версий как это сделать...........
Помогите пож..........
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kovalsky2
0 / 0 / 0
Регистрация: 05.08.2009
Сообщений: 96
30.03.2011, 16:03     Разноцветный текст в ListBox #2
Цветные буковки!!)
C GDI - дружите?
Cмысл в том что выводить текст,выделение строчки надо рисовать самому.
Вечерком что-нибуть изображу.
Kovalsky2
0 / 0 / 0
Регистрация: 05.08.2009
Сообщений: 96
30.03.2011, 23:08     Разноцветный текст в ListBox #3
В стиле окошка ListBox должно быть LBS_HASSTRINGS | LBS_OWNERDRAWFIXED.
LBS_HASSTRINGS - для того чтоб работал LB_GETTEXT
LBS_OWNERDRAWFIXED - означает что мы сами всё будем рисовать.
(LBS_OWNERDRAWVARIABLE - тоже сами,тока различная высота строк или что то в этом духе).
Согласно такому стилю ListBox появиться месcccага
WM_DRAWITEM,lParam которой будет LPDRAWITEMSTRUCT.
Ну, а дальше начнём рисовать:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
      case WM_DRAWITEM:
      { 
        DRAWITEMSTRUCT *Drw=(LPDRAWITEMSTRUCT)lParam;
        COLORREF    crNormal =GetSysColor(COLOR_WINDOW);
        DWORD       colorText=RGB(rand(),rand(),rand());
        char text[255];
        int res=SendMessage(Drw->hwndItem,LB_GETTEXT,(WPARAM) Drw->itemID,(LPARAM)text);
        HBRUSH Br,Norm;
        Br = CreateSolidBrush(GetSysColor( COLOR_HIGHLIGHT ) );
        Norm = CreateSolidBrush(GetSysColor(COLOR_WINDOW) );
        SetBkMode(Drw->hDC,TRANSPARENT);
        if (Drw->itemState&ODS_SELECTED)
        {
        SetTextColor(Drw->hDC,colorText^GetSysColor(COLOR_WINDOW));
        FillRect(Drw->hDC,&Drw->rcItem, Br);    
      }else
      {
        SetTextColor(Drw->hDC,colorText);
        FillRect(Drw->hDC,&Drw->rcItem, Norm);  
      }
        if (res!=LB_ERR)DrawText(Drw->hDC,text,strlen(text),&Drw->rcItem,DT_LEFT);
        DeleteObject(Br);
        DeleteObject(Norm);
    }
        break;
Что то в этом духе.
max-@
0 / 0 / 0
Регистрация: 22.03.2011
Сообщений: 68
31.03.2011, 07:42  [ТС]     Разноцветный текст в ListBox #4
Ок спасибо, попозже разберусь........
max-@
0 / 0 / 0
Регистрация: 22.03.2011
Сообщений: 68
01.04.2011, 00:39  [ТС]     Разноцветный текст в ListBox #5
Отлично все прекрасно работает...........
Но у меня еще вопрос, как разукрасить в определенные цвета одни значения в листбоксе...........всего возможно два варианта раскраски.....можно ли определённой строке поставить дополнительный атрибут.....например 0 или 1.............
Kovalsky2
0 / 0 / 0
Регистрация: 05.08.2009
Сообщений: 96
01.04.2011, 04:48     Разноцветный текст в ListBox #6
А кто нам запретит.)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int Param;//Значение которое дудет хранить определённая строчка
int nItem=0;//Номер необходимой строки
Param=1;//Параметр (1 или 0)
SendMessage(hWndListBox, LB_SETITEMDATA, nItem, (LPARAM)(Param));
 
// или где у Вас добавляеться строчка
 
nItem=SendMessage(hWndListBox, LB_ADDSTRING, 0, (LPARAM)('String'));
SendMessage(hWndListBox, LB_SETITEMDATA, nItem, (LPARAM)(Param)); 
 
// далее в
 
case WM_DRAWITEM:
{
...........
 DWORD colorText=0;//Черный
 if (Drw->itemData) сolorText=RGB(255,0,0);//Красный
...........
}
В качестве Param можно передать адресс целой структуры(класса),в которой до бубна информации.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.04.2011, 10:57     Разноцветный текст в ListBox
Еще ссылки по теме:

Считайте текст и выведите на экран исходный текст, а затем только каждое третье предложение C++
Разноцветный текст в консоли C++
С++ Дан текст, составленный из строчных букв. Напечатать текст заглавными буквами C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
max-@
0 / 0 / 0
Регистрация: 22.03.2011
Сообщений: 68
02.04.2011, 10:57  [ТС]     Разноцветный текст в ListBox #7
Спасибо все работает............
Yandex
Объявления
02.04.2011, 10:57     Разноцветный текст в ListBox
Ответ Создать тему
Опции темы

Текущее время: 03:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru