Есть таблица IDC_LIST1, которой соответствует переменная m_IDC_LIST1 типа CMyListCtrl5 (который является потомком класса CListCtrl). В этой таблице я вывожу текст и рисую графику в клетках таблицы.
Вот код:
Код:
class CMyListCtrl5 : public CListCtrlEx2
{
protected:
void OnPaint();
void PreSubclassWindow();
CBrush *pBrush;
CFont m_MyFont;
afx_msg void OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult);
DECLARE_MESSAGE_MAP()
public:
CMyListCtrl5();
int typeofdraw;
int cellwidth;
std::vector<cellinfo> cellattributes;
std::vector<CString> firstcolumntexts;
void setVisibilityZone(int countstr, long jtdate1, long double tjdate1, long jtdate2, long double tjdate2);
void insertRowOfCellInfo();
};
void CMyListCtrl5::PreSubclassWindow()
{
CListCtrl::PreSubclassWindow();
pBrush = new CBrush(RGB(128,128,128));
LOGFONT lf;
memset(&lf,0,sizeof(LOGFONT));
lf.lfHeight = 8;
lf.lfWidth = 4;
lf.lfWeight = FW_NORMAL;
wcscpy(lf.lfFaceName,L"MS Sans Serif");
m_MyFont.CreateFontIndirect(&lf);
SetFont(&m_MyFont);
}
void CMyListCtrl5::OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult)
{
int i, n;
CRect rect, rect2, rect3, rect4;
cellinfo mycellinfo;
LPCTSTR pzText;
CString myString;
CBrush *pBrush2;
pBrush2 = new CBrush(RGB(255,255,255));
NMLVCUSTOMDRAW* pLVCustomDraw = reinterpret_cast<NMLVCUSTOMDRAW*>(pNMHDR);
NMCUSTOMDRAW pLV = (NMCUSTOMDRAW)pLVCustomDraw->nmcd;
*pResult = CDRF_DODEFAULT;
switch (pLVCustomDraw->nmcd.dwDrawStage)
{
case CDDS_PREPAINT:
*pResult |= CDRF_NOTIFYITEMDRAW;
break;
case CDDS_ITEMPREPAINT:
{
if (typeofdraw==1)
{
n = pLVCustomDraw->nmcd.dwItemSpec;
myString = (CString)(firstcolumntexts.at(n));
if (myString!=L"")
{
GetSubItemRect(n,0,LVIR_BOUNDS,rect);
GetSubItemRect(n,0,LVIR_LABEL,rect3);
GetDC()->TextOut(rect3.left+3,rect3.top-1,myString);
}
for (i=1; i<25; i++)
{
myString = GetItemText(n,i);
if (myString!=L"")
{
GetSubItemRect(n,i,LVIR_LABEL,rect3);
GetDC()->TextOut(rect3.left+3,rect3.top-1,myString);
}
GetSubItemRect(n,i,LVIR_BOUNDS,rect);
mycellinfo = (cellinfo)(cellattributes.at(n*25+i));
if (mycellinfo.cellstate==1)
// если начало зоны видимости
{
rect2.top = rect.top+2;
rect2.bottom = rect.bottom-1;
rect2.left = rect.left + mycellinfo.beginpos;
rect2.right = rect.right;
GetDC()->FillRect(&rect2,pBrush);
}
if (mycellinfo.cellstate==2)
// если продолжение зоны видимости
{
rect2.top = rect.top+2;
rect2.left = rect.left;
rect2.right = rect.right;
rect2.bottom = rect.bottom-1;
GetDC()->FillRect(&rect2,pBrush);
}
if (mycellinfo.cellstate==3)
// если конец зоны видимости
{
rect2.top = rect.top+2;
rect2.bottom = rect.bottom-1;
rect2.left = rect.left;
rect2.right = rect.left + mycellinfo.endpos;
GetDC()->FillRect(&rect2,pBrush);
}
if (mycellinfo.cellstate==4)
// если начало и конец зоны видимости
{
rect2.top = rect.top+2;
rect2.bottom = rect.bottom-1;
rect2.left = rect.left + mycellinfo.beginpos;
rect2.right = rect.left + mycellinfo.endpos;
GetDC()->FillRect(&rect2,pBrush);
}
}
}
}
break;
}
}
В этом коде я создаю шрифт m_MyFont с определенными параметрами. Вся текстовая информация выводится в таблицу, вся графика рисуется в таблице, но шрифт для текста какой был по умолчанию, такой и остается. Как сделать так, чтобы текст в таблице выводился нужным мне шрифтом?