Пример демонстрирует использование
изображений в ячейках.
Определяется класс CGridView
производный от CALXGridView. В его
конструкторе добавляются столбцы (функцией AddCol())
и определяется тип элемента управления (функция
DefineColCtrl()). Ячейки столбцов определяются как
ячейки содержащие изображение (функция DefineImage()).
DIT_BITMAP - bitmap изображение, DIT_ICON - иконка, DIT_IMGLIST -
изображение из списка (класса CImageList).CGridView::CGridView()
{
// Bitmap
DefineColCtrl(AddCol(180,"Bitmap && LeftText",
ACFF_LEFT, AHFF_LEFT),GA_EDITCTRL,WS_CHILD | ES_LEFT | ES_AUTOHSCROLL);
DefineImage(0,7,7,DIT_BITMAP);
// Icon
DefineColCtrl(AddCol(180,"Icon && CenterText",
ACFF_CENTER, AHFF_CENTER),GA_EDITCTRL,WS_CHILD | ES_CENTER | ES_AUTOHSCROLL);
DefineImage(1,9,9,DIT_ICON);
// ImageList
DefineColCtrl(AddCol(180,"ImageList && RightText",
ACFF_RIGHT, AHFF_RIGHT),GA_EDITCTRL,WS_CHILD | ES_RIGHT | ES_AUTOHSCROLL);
DefineImage(2,15,15,DIT_IMGLIST);
m_BMP.LoadBitmap(IDB_BITMAP);
VERIFY(m_ImageList.Create(IDB_BITMAP_IMGLIST, 15, 1,
(COLORREF)0x808000));
SetGridRowCount(10000);
}
Также переопределяются
виртуальные функции GetCellData() (возвращает данные
необходимые для отображения ячейки), GetImage()
(озвращает указатель на изображение ячейки, для
ячеек DIT_BITMAP и DIT_ICON ), GetImageListDrawParams() (возвращает
указатель на изображение ячейки и его параметры,
для ячеек DIT_IMGLIST).
LPARAM CGridView::GetImage(int nCol, int nRow, BOOL bSelected)
{
if(nCol == 0)
return (LPARAM)(HBITMAP)m_BMP;
if(nCol == 1)
return
(LPARAM)m_ImageList.ExtractIcon(bSelected ? 1 : 0);
return NULL;
}
void CGridView::GetImageListDrawParams(int
nCol, int nRow, IMAGELISTDRAWPARAMS* pimldp, BOOL bSelected)
{
pimldp->himl = m_ImageList.m_hImageList;
if(bSelected)
pimldp->fStyle = ILD_SELECTED;
pimldp->i = 0;
} |