Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.94
max-@
0 / 0 / 0
Регистрация: 22.03.2011
Сообщений: 68
#1

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

30.03.2011, 02:46. Просмотров 2178. Ответов 6
Метки нет (Все метки)

У меня даже нет версий как это сделать...........
Помогите пож..........
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.03.2011, 02:46
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Разноцветный текст в ListBox (C++):

Разноцветный текст - C++
О великие сенсеи программирования, вопрос к вам =) каким кодом можно сделать разноцветный текст в появляющейся консольке, код с++

Разноцветный текст в консоли - C++
Народ, подскажите как сделать так чтобы, скажем, в слове "Hello" разные буквы выводились разным цветом system("сolor 1F"); красит весь...

Графика: Разноцветный шестиугольник - C++
Написать программу, генерирующую на экране разноцветный шестиугольник, цвета секторов которого меняются циклически. После трех циклов смены...

Разноцветный текст в консоли - C++
Здравствуйте, нужна помощь, нужно сделать все места парковки зелеными/жёлтыми, а забронированные красными. Подскажите как оформить. ...

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

Неправильно отображается текст (лишний текст при вводе точки) - C++
Привет всем, нид хел по коду С++. Все работает, но не правильно отображает текст ( лишний текст при вводе символа (точки) '.'...

6
Kovalsky2
0 / 0 / 0
Регистрация: 05.08.2009
Сообщений: 96
30.03.2011, 16:03 #2
Цветные буковки!!)
C GDI - дружите?
Cмысл в том что выводить текст,выделение строчки надо рисовать самому.
Вечерком что-нибуть изображу.
0
Kovalsky2
0 / 0 / 0
Регистрация: 05.08.2009
Сообщений: 96
30.03.2011, 23:08 #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;
Что то в этом духе.
0
max-@
0 / 0 / 0
Регистрация: 22.03.2011
Сообщений: 68
31.03.2011, 07:42  [ТС] #4
Ок спасибо, попозже разберусь........
0
max-@
0 / 0 / 0
Регистрация: 22.03.2011
Сообщений: 68
01.04.2011, 00:39  [ТС] #5
Отлично все прекрасно работает...........
Но у меня еще вопрос, как разукрасить в определенные цвета одни значения в листбоксе...........всего возможно два варианта раскраски.....можно ли определённой строке поставить дополнительный атрибут.....например 0 или 1.............
0
Kovalsky2
0 / 0 / 0
Регистрация: 05.08.2009
Сообщений: 96
01.04.2011, 04:48 #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 можно передать адресс целой структуры(класса),в которой до бубна информации.
0
max-@
0 / 0 / 0
Регистрация: 22.03.2011
Сообщений: 68
02.04.2011, 10:57  [ТС] #7
Спасибо все работает............
0
02.04.2011, 10:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.04.2011, 10:57
Привет! Вот еще темы с ответами:

Считайте текст и выведите на экран исходный текст, а затем только четные предложения - C++
Считайте текст и выведите на экран исходный текст, а затем только четные предложения. Либо: Напишите программу, подсчитывающую, сколько...

Дописать в конец a.jpeg некий секретный текст. Вывести этот текст на экран - C++
Как мне стало известно все .jpeg оканчиваются на маркер FFD9. Его мы и будем искать при выводе результата. Сначала откроем файл на...

Как правильно считать текст из файла? Весь текст, со всеми знаками, пробелами - C++
подскажите, чет затупил как правильно считать текст из файла(весь текст со всеми знаками пробелами и т.д.), чтобы поработать с этим текстом...

Считайте текст и выведите на экран исходный текст, а затем только каждое третье предложение - C++
Помогите, пожалуйста!! очень нужно!! Считайте текст и выведите на экран исходный текст, а затем только каждое третье предложение.


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru