Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Цвет текста в статус баре  (Прочитано 18502 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Kultura
Помогающий

ru
Offline Offline

« : 21-03-2009 14:01 » 

Изучаю эллементы управления общего пользования.

Вопрос: как менять цвет текста в статус баре (в разных частях, но сразу во всех тоже пойдет)?
Записан
Finch
Спокойный
Администратор

il
Online Online
Пол: Мужской
Пролетал мимо


« Ответ #1 : 21-03-2009 16:44 » 

Когда задаеш подобные вопросы, то нужно обязательно указывать, какую именно библиотеку ты изучаеш. Варианты для студии могут быть разные. MFC, WinForm или пишеш в чистом WinAPI. Или вообше стороняя библиотека.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Kultura
Помогающий

ru
Offline Offline

« Ответ #2 : 23-03-2009 16:54 » 

чистый WinAPI
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #3 : 23-03-2009 20:10 » 

статус бар - это где ? Внизу окна ?
Записан

Finch
Спокойный
Администратор

il
Online Online
Пол: Мужской
Пролетал мимо


« Ответ #4 : 23-03-2009 20:39 » 

Леш, а ты статусбар обзываеш как-то по другому? Сколько я видел библиотек, везде вроде самая нижняя полоска окна, в которой как правило выводится инфа, называется статусбар.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #5 : 23-03-2009 21:27 » 

я им просто не пользовался никогда, а ещё удалял, когда визард делал его принудительно во фрейме Улыбаюсь Мне обычно он мешался
Записан

Finch
Спокойный
Администратор

il
Online Online
Пол: Мужской
Пролетал мимо


« Ответ #6 : 24-03-2009 13:11 » 

Сейчас посмотрел MSDN, насколкьо я понял, без собственной прорисовки не обойтись. Почитай статью http://msdn.microsoft.com/en-us/library/bb760728(VS.85).aspx#sb_owner_draw
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Kultura
Помогающий

ru
Offline Offline

« Ответ #7 : 27-03-2009 10:08 » 

Finch, прочитал, мне бы еще пример.

Сам, насколько понял, делаю так: посылаю, после разбития статуса на части
Код:
SendMessage (hStatus, SB_SETTEXT, (WPARAM) (partNum | SBT_OWNERDRAW), 0);

А в WM_DRAWITEM изменяю цвет:  SetTextColor (pdis->hDC, YELLOW);

В таком виде не работает, как правильно?
Записан
Finch
Спокойный
Администратор

il
Online Online
Пол: Мужской
Пролетал мимо


« Ответ #8 : 27-03-2009 12:15 » 

Ты должен сам отрисовать элемент, а не просто изменить цвет текста. Тебе дается контекст устройства, вот и рисуй на нем текст с помошью TextOut.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Kultura
Помогающий

ru
Offline Offline

« Ответ #9 : 30-03-2009 07:47 » 

Не разобрался я, OWNERDRAW должен быть сам статус бар или каждая его часть. И как узнать, какой текст выводить в TextOut.
А главный вопрос: каким образом обрабатывать WM_MENUSELECT - свой MenuHelp делать?

Очень помог бы краткий пример по этим вопросам. В мсдн-е очень сжато написано
Записан
Serg79
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #10 : 30-03-2009 12:00 » 

И как узнать, какой текст выводить в TextOut.
Код:
COLORREF GetTextColor(
  HDC hdc   // handle to DC
);

BOOL GetTextMetrics(
  HDC hdc,            // handle to DC
  LPTEXTMETRIC lptm   // text metrics
);

А вообще используй MSDN, там все это есть.
« Последнее редактирование: 30-03-2009 12:02 от Serg79 » Записан
Kultura
Помогающий

ru
Offline Offline

« Ответ #11 : 01-04-2009 09:22 » 

Serg79, вопрос немного не в том.
Я вот за что: когда надо обновить текст в обычном статус баре, посылаем SB_SETTEXT
СБ получает сообщение и отрисовывает этот текст.
Если СБ OWNERDRAW, окно отрисовывает текст. Вопрос был, как узнать, что за текст надо отрисовать. Хотя с этим, вроде уже понятно: отправлять в WM_DRAWITEM статус бару SB_GETTEXT и его рисовать.

А вот с WM_MENUSELECT и MenuHelp (см. пред. пост) все еще не понятно.
Записан
Serg79
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #12 : 01-04-2009 09:25 » 

Статус Бар, это тоже самое окно и оно имеет свои установки, получай контекст окна Статус Бара и из него узнавай каким цветом и каким шрифтом на нем будет отображаться текст. Приведенные выше функции как раз и возвращают данные параметры.
Записан
Kultura
Помогающий

ru
Offline Offline

« Ответ #13 : 01-04-2009 12:02 » 

Serg79, не то.
Вопрос не в том, что бы узнать цвет, шрифт, а в том, что бы их поменять на свои.
Записан
Serg79
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #14 : 01-04-2009 12:06 » 

Kultura, ну Ты прям как маленький.
Код:
COLORREF SetTextColor(
  HDC hdc,           // handle to DC
  COLORREF crColor   // text color
);
Это что бы изменить цвет.

Что бы изменить шрифт, надо его создать, после чего прикрепить его к контексту окна.
Записан
Kultura
Помогающий

ru
Offline Offline

« Ответ #15 : 02-04-2009 17:12 » 

Serg79, это снова не то   Внимание! Говорит и показывает...

см. пост номер 7 и 8.

Ладно, забей на цвет текста, лучше по обработке (с OWNERDRAW СБ !!!) WM_MENUSELECT и MenuHelp (см. пост 9) подскажи.
Записан
Serg79
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #16 : 02-04-2009 18:43 » 

Serg79, это снова не то   Внимание! Говорит и показывает...
Ну тогда я пас.  Улыбаюсь
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines