大家好:
  我建了一个对话框,在其上静态添加了两个richedit框,现实现了一个写字,在另一个里面显示。现在想添加两个按钮,一个设置选定的某个Edit框中的字体和颜色,一个可以实现对发送文件的超链接,即一个Edit里发文件后在另一个里会显示"接收","取消"这样的超超链接。请各个高手指点一二,万分感激!!!

解决方案 »

  1.   

    设置字体
    CHARFORMAT cf;
    ZeroMemory(&cf, sizeof(CHARFORMAT));
    cf.cbSize = sizeof(CHARFORMAT);
    cf.dwMask = CFM_BOLD|CFM_CHARSET|CFM_COLOR|CFM_FACE|CFM_ITALIC|CFM_SIZE|CFM_UNDERLINE|CFM_STRIKEOUT; if (m_bIsBold)
    {
    cf.dwEffects |= CFE_BOLD;
    }
    if (m_bIsItalic)
    {
    cf.dwEffects |= CFE_ITALIC;
    }
    if (m_bIsUnderLine)
    {
    cf.dwEffects |= CFE_UNDERLINE;
    }
    if (m_bIsStrikeOut)
    {
    cf.dwEffects |= CFM_STRIKEOUT;
    }
    cf.yHeight = abs(m_Font.lfHeight) * 20;
    cf.crTextColor = m_crFont;
    cf.bCharSet = (BYTE)m_Font.lfCharSet;
    _tcscpy((TCHAR *)cf.szFaceName, m_Font.lfFaceName); SetSel(0, -1);
    SetSelectionCharFormat(cf);
    SetDefaultCharFormat(cf);
    SetWordCharFormat(cf);
    SetSel(0, 0);
      

  2.   

    设置链接
             CHARFORMAT2 cf2;
    ZeroMemory(&cf2, sizeof(CHARFORMAT2));//
    cf2.cbSize = sizeof(CHARFORMAT2);
    cf2.dwMask = CFM_LINK;
    cf2.dwEffects = CFE_LINK;
    SendMessage(EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&cf2);
      

  3.   

    CFontDialog fontDlg;
    if (fontDlg.DoModal() == IDOK)
    {    BOOL m_bIsBold = fontDlg.IsBold();
    BOOL m_bIsItalic = fontDlg.IsItalic();
    BOOL m_bIsStrikeOut = fontDlg.IsUnderline();
    BOOL m_bIsUnderLine = fontDlg.IsStrikeOut();
             .....
    }
      

  4.   

    不好意思,再问一下,参量m_crFont怎么得来啊?
      

  5.   

    我给m_Font定义为LOGFONT结构,m_crFont呢?
      

  6.   

    Edit框中的字体在设置了新的值后字体不能正常显示,缩成了线,不知该如何处理?
      

  7.   

    m_crFont是颜色
    m_Font.lfHeight需要转化成磅值m_Font.lfHeight = -::MulDiv(-m_Font.lfHeight, 72, 
    dc.GetDeviceCaps(LOGPIXELSY));//磅值
      

  8.   

    我仔细看了RICHEDITCTRL的文档已经解决了,谢谢!