-Поиск по дневнику

Поиск сообщений в rss_forum_sources_ru

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 29.07.2007
Записей:
Комментариев:
Написано: 80


Как изменить шрифт при рисовании в клетках таблицы?

Вторник, 12 Января 2021 г. 10:30 + в цитатник
erslgoeirjh: Есть таблица 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 cellattributes;
    std::vector 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(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 с определенными параметрами. Вся текстовая информация выводится в таблицу, вся графика рисуется в таблице, но шрифт для текста какой был по умолчанию, такой и остается. Как сделать так, чтобы текст в таблице выводился нужным мне шрифтом?

https://forum.sources.ru/index.php?showtopic=421086&view=findpost&p=3843535

Метки:  

 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку