Re[3]: изменить цвет и фонт отдельного итема в CListCtrl
От: willi  
Дата: 24.04.01 06:43
Оценка: 7 (2)
Здравствуйте mrwel, 20.04.2001 18:42:02 вы писали:

>Ну таким образом можно всех туда посылать !!!

>Объясни чуваку , мне тоже интересно !!! :)
>
>Это не трудно !!!

Это не трудно, но проблема ведь тривиальная!!!
А времени чтобы давать развернутые ответы нет.
Там все написано, даже примеры есть.
Ну и ленивый же вы народ!

в диалог вставляем ListCtrl (ID: IDC_LIST, переменная m_listCtrl)
сделаем цвет красным а шрифт жирным италиком


добавляем перемнную CFont m_fontBoldItalic в наш диалог
в OnInitDialog добавляем

BOOL CCustDrawListDlg::OnInitDialog()
{
CDialog::OnInitDialog();
...
LOGFONT lf;
::GetObject((HGDIOBJ)::SendMessage(m_listCtrl.GetSafeHwnd(), WM_GETFONT, 0, 0), sizeof(LOGFONT), &lf);
lf.lfWeight = FW_BOLD;
lf.lfItalic = TRUE;
m_fontBoldItalic.CreateFontIndirect(&lf);


return TRUE; // return TRUE unless you set the focus to a control
}


в карту сообщений ручками добавляем
...
BEGIN_MESSAGE_MAP(CCustDrawListDlg, CDialog)
//{{AFX_MSG_MAP(CCustDrawListDlg)
...
//}}AFX_MSG_MAP
ON_NOTIFY(NM_CUSTOMDRAW, IDC_LIST, OnCustomDraw)
END_MESSAGE_MAP()
...

ну и теперь имплементируем
...
void CCustDrawListDlg::OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult)
{
NMLVCUSTOMDRAW* pLVCustomDraw = (NMLVCUSTOMDRAW*)pNMHDR;
*pResult = CDRF_DODEFAULT;
switch(pLVCustomDraw->nmcd.dwDrawStage)
{
case CDDS_PREPAINT:
*pResult |= CDRF_NOTIFYITEMDRAW;
break;
case CDDS_ITEMPREPAINT:
pLVCustomDraw->clrText = RGB(255, 0, 0);
::SelectObject(pLVCustomDraw->nmcd.hdc, m_fontBold);
*pResult |= CDRF_NEWFONT;
break;
}
}
...

и сё
\/\/i||i
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.