Четверг, Сентябрь 24, 2020

Окно форматирования текста

//Создать SDI проект в MFC. В последнем окне мастера выбрать для C...View класса
//базовый класс CRichEditView.В ресурсах выбрать String Table и добавить две
//строки IDC_FONTNAME и IDC_FONTSIZE.Добавить в Меню пункт меню например Format
//добавить обработчик сообщения на этот пункт.
void CComRichProgressView::OnFormat()
{
    USES_CONVERSION;

    CMFCToolBarFontComboBox* pSrcCombo =
        (CMFCToolBarFontComboBox*) CMFCToolBarComboBoxButton::GetByCmd (IDC_FONTNAME, TRUE);
    if (pSrcCombo == NULL)
    {
        CRichEditView::OnFormatFont ();
        return;
    }

    CHARFORMAT2W cf;
    cf.szFaceName[0] = NULL;
    cf.dwMask = CFM_FACE | CFM_CHARSET;

    const CMFCFontInfo* pDesc = pSrcCombo->GetFontDesc ();
    ASSERT_VALID (pDesc);
    ASSERT(pDesc->m_strName.GetLength() < LF_FACESIZE);

    lstrcpyn(cf.szFaceName, pDesc->m_strName, LF_FACESIZE);

    cf.bCharSet = pDesc->m_nCharSet;
    cf.bPitchAndFamily = pDesc->m_nPitchAndFamily;

    CMFCToolBarFontSizeComboBox* pSizeCombo =
        DYNAMIC_DOWNCAST (CMFCToolBarFontSizeComboBox, CMFCToolBarFontSizeComboBox::GetByCmd (IDC_FONTSIZE));
    if (pSizeCombo != NULL)
    {
        int nSize = pSizeCombo->GetTwipSize();
        pSizeCombo->RebuildFontSizes (pDesc->m_strName);
        pSizeCombo->SetTwipSize (nSize);
    }

    SetCharFormat (cf);
    SetFocus ();
}

Back to Top