Как задать цвет фона заголовка колонок в ListView
От: maks-nelipa  
Дата: 15.07.08 19:12
Оценка:
Как задать цвет фона заголовка колонок в ListView?
Re: Как задать цвет фона заголовка колонок в ListView
От: Carc Россия http://www.amlpages.com/home.php
Дата: 16.07.08 00:58
Оценка:
Здравствуйте, maks-nelipa, Вы писали:

MN>Как задать цвет фона заголовка колонок в ListView?

NM_CUSTOMDRAW
Aml Pages Home
Re[2]: Как задать цвет фона заголовка колонок в ListView
От: maks-nelipa  
Дата: 16.07.08 09:11
Оценка:
Здравствуйте, Carc, Вы писали:

C>Здравствуйте, maks-nelipa, Вы писали:


MN>>Как задать цвет фона заголовка колонок в ListView?

C>NM_CUSTOMDRAW
На сколько я понимаю NM_CUSTOMDRAW в ListView отвечает только за отрисовку самих элементов а не заголовков столбцов.
Re[3]: Как задать цвет фона заголовка колонок в ListView
От: McQwerty Россия  
Дата: 16.07.08 09:42
Оценка:
Здравствуйте, maks-nelipa, Вы писали:

MN>>>Как задать цвет фона заголовка колонок в ListView?

C>>NM_CUSTOMDRAW
MN>На сколько я понимаю NM_CUSTOMDRAW в ListView отвечает только за отрисовку самих элементов а не заголовков столбцов.

Попробуй так: subclassing листа + NM_CUSTOMDRAW от заголовка в новой оконной функции листа.
По идее должно сработать, в MSDN есть вот это.
Re[3]: Как задать цвет фона заголовка колонок в ListView
От: Carc Россия http://www.amlpages.com/home.php
Дата: 16.07.08 10:18
Оценка:
"maks-nelipa" <73332@users.rsdn.ru> сообщил/сообщила в новостях следующее: news:3025006@news.rsdn.ru...
> Здравствуйте, Carc, Вы писали:
>
> C>Здравствуйте, maks-nelipa, Вы писали:
>
> MN>>Как задать цвет фона заголовка колонок в ListView?
> C>NM_CUSTOMDRAW
> На сколько я понимаю NM_CUSTOMDRAW в ListView отвечает только за отрисовку самих элементов а не заголовков столбцов.
HeaderCtrl (заголовки) это отдельное контрол на ListCtrl и у него свои нотификации.
Posted via RSDN NNTP Server 2.1 beta
Aml Pages Home
Re: Как задать цвет фона заголовка колонок в ListView
От: Centaur Россия  
Дата: 16.07.08 11:37
Оценка:
Здравствуйте, maks-nelipa, Вы писали:

MN>Как задать цвет фона заголовка колонок в ListView?


Цвет фона заголовка колонок в ListView совпадает с цветом поверхности кнопки, задаётся пользователем в общих настройках цветов.

Программно — лучше всего никак.
Re[4]: Как задать цвет фона заголовка колонок в ListView
От: maks-nelipa  
Дата: 16.07.08 12:26
Оценка:
Здравствуйте, Carc, Вы писали:


C>"maks-nelipa" <73332@users.rsdn.ru> сообщил/сообщила в новостях следующее: news:3025006@news.rsdn.ru...

>> Здравствуйте, Carc, Вы писали:
>>
>> C>Здравствуйте, maks-nelipa, Вы писали:
>>
>> MN>>Как задать цвет фона заголовка колонок в ListView?
>> C>NM_CUSTOMDRAW
>> На сколько я понимаю NM_CUSTOMDRAW в ListView отвечает только за отрисовку самих элементов а не заголовков столбцов.
C>HeaderCtrl (заголовки) это отдельное контрол на ListCtrl и у него свои нотификации.

У меня WINAPI. Как у Винапишного ListView получить Header?
Re[3]: Как задать цвет фона заголовка колонок в ListView
От: Carc Россия http://www.amlpages.com/home.php
Дата: 16.07.08 12:39
Оценка:
> На сколько я понимаю NM_CUSTOMDRAW в ListView отвечает только за отрисовку самих элементов а не заголовков столбцов.

На MFC примерно так: CListWithColorHeaderCtrl это наследник от CListCtrl для того чтобы перехватить нотификации от HeaderCtrl.
Ну лень мне городить оконные процедуры с этими всеми switch`ами.... Суть решения вполне видна в MFC-евом коде, наследник от CListCtrl просто сам ловит нотификации от HeaderCtrl, переписать на WinAPI труда, полагаю, не составит.
Короче, выложил полный MFC-евый пример тут http://www.amlpages.com/Source/ColorHeaderCtrl.zip

/*HeaderCtrl это отдельный контрол дочерний по отношению к ListCtrl, и именно оконная 
процедура ListCtrl и будет получать нотификации на CUSTOMDRAW HeaderCtrl`f
собственно их и ловим
*/
LRESULT CListWithColorHeaderCtrl::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
{
 LRESULT l=CListCtrl::WindowProc(message, wParam, lParam);

 if (WM_NOTIFY == message) {//че правда нотификация что ли? ептить...
  const NMHDR* const pNMHDR=(NMHDR*)lParam;
  //проверяем код нотификации и что нотификация пришла от HeaderCtrl
  if (NM_CUSTOMDRAW==pNMHDR->code && GetHeaderCtrl()->GetSafeHwnd()==pNMHDR->hwndFrom) {
   l=OnHeaderCustomDraw((NMCUSTOMDRAW*)pNMHDR);
  }
 }

 return l;
}

//выставляем цвета
LRESULT CListWithColorHeaderCtrl::OnHeaderCustomDraw(NMCUSTOMDRAW *pCD)
{
 //по умолчанию нехай Windows сама все рисует.
 LRESULT l=CDRF_DODEFAULT;

    switch ( pCD->dwDrawStage)//что за прорисовка, какой этап? (подробности в MSDN)
    {
 // при начале прорисовки указываем, что нам нужны нотификации 
 //  на прорисовку каждого айтема
 case CDDS_PREPAINT:
  l|= CDRF_NOTIFYITEMDRAW ;
        break;
 case CDDS_ITEMPREPAINT:// собственно ставим разные цвета
  if (pCD->dwItemSpec == 0) {//первый айтем?
   ::SetBkColor(pCD->hdc,RGB(255,0,0));
   ::SetTextColor(pCD->hdc,RGB(255,255,255));
  }
  else {// ах бль не первый айтем?
   ::SetBkColor(pCD->hdc,RGB(0,255,0));
   ::SetTextColor(pCD->hdc,RGB(255,0,0));
  }
  //винде напомним что мы вообще то сменили цвета 
  l|=CDRF_NEWFONT;
        break;
    }

 return l;
}
Posted via RSDN NNTP Server 2.1 beta
Aml Pages Home
Re[5]: Как задать цвет фона заголовка колонок в ListView
От: Carc Россия http://www.amlpages.com/home.php
Дата: 16.07.08 12:54
Оценка:
> У меня WINAPI. Как у Винапишного ListView получить Header?
Сообщение LVM_GETHEADER вернет HWND Header
Posted via RSDN NNTP Server 2.1 beta
Aml Pages Home
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.