我定义了个:CHARFORMAT cf;
我初始化cf为:字体为:宋体,字形为:粗斜体,大小:15,下划线:有,颜色:红色。
我现在该怎么初始化呢?CHARFORMAT  的结构体看不明白什么意思呀~!谁帮我写下初始化~!谢谢咯~!

解决方案 »

  1.   

    cf.cbSize = sizeof(CHARFORMAT);
    cf.dwMask = CFM_BOLD|CFM_COLOR|CFM_FACE|CFM_ITALIC|CFM_UNDERLINE;
    cf.dwEffects = CFE_BOLD|CFE_ITALIC|CFE_UNDERLINE;
    cf.yHeight = 15*1440/96;
    cf.yOffset = 0;
    cf.crTextColor = RGB(255,0,0);
    cf.bCharSet = 0;
    cf.bPitchAndFamily = 0;
    strcpy(cf.szFaceName, "宋体");
      

  2.   

    1:其中的字体大小:
    cf.yHeight = 15*1440/96;   什么意思呢?2:还有网页贴签中的字体还是那种语言的字体里面,还有是用:缇   做单位的,缇与像素是怎么换算的呢?3:还有CHARFORMAT中的字体可以带有删除线,而网页贴签中好像没有这个贴签呢?只有<B>粗体,<U>下划线,<I>斜体,是不是啊?如果要加个删除线怎么表示?
      

  3.   

    1.那就是象素到缇的转换过程
    3.删除线<s></s>
      

  4.   

    我建了个通用对话框,字体的,我将cf赋给FontDlg,打开FontDlg时,在FontDlg框内字体的大小内怎么为空呢?正常应该为15啊.其他的 字体为:宋体,字形为:粗斜体,下划线:有,颜色:红色,都正常的赋给了FontDlg。大家再帮忙解决下:
    代码:
    CFontDialog FontDlg(cf,CF_EFFECTS | CF_SCREENFONTS,NULL,this); if (FontDlg.DoModal() == IDOK)
    {
    FontDlg.GetCharFormat(cf);
    m_RichEdit.SetDefaultCharFormat(cf);
    }
      

  5.   

    通用对话框 选字体的。。那个cf不是CHARFORMAT,是CHOOSEFONT
    试试这样void set_font(HWND hDlg, char* fontBuff, int* fontSize){
    //hDlg是父窗口
    //fontBuff初始化对话框字体,并且接受最后关闭时选择的字体
    //fontSize初始化字体大小,并且接受最后关闭时选择的字体大小
    TCHAR font[32];
    CHOOSEFONT cf;
    LOGFONT lf;
    HDC hdctemp;
    hdctemp=GetDC(0);

    ZeroMemory(&cf, sizeof(cf));
    ZeroMemory(&lf,sizeof(lf));
    ////////////////
    lf.lfCharSet=DEFAULT_CHARSET;//字符集
    lf.lfHeight = -MulDiv(*fontSize, GetDeviceCaps(hdctemp, LOGPIXELSY), 72);//字体大小
    ZeroMemory(&font,sizeof(font));
    memcpy(font, fontBuff, strlen(fontBuff));
    lstrcpy(lf.lfFaceName, font) ;
    ///////////////////////
    cf.hwndOwner=hDlg;
    cf.lpLogFont=&lf;
    cf.lStructSize= sizeof(CHOOSEFONT);
    cf.Flags = CF_INITTOLOGFONTSTRUCT | CF_SCREENFONTS |CF_TTONLY | CF_SELECTSCRIPT;
    cf.nFontType=SCREEN_FONTTYPE;
    cf.iPointSize =0;
    if(ChooseFont(&cf) !=NULL) {
    memcpy(fontBuff, cf.lpLogFont->lfFaceName, strlen(cf.lpLogFont->lfFaceName)+1);
    int x=cf.iPointSize/10;
    memcpy(fontSize, &x, 4);
    }
    ReleaseDC(0,hdctemp);
    }定义 CHARFORMAT cf 之后最好先
    ZeroMemory(&cf, sizeof(cf)); 否则容易出现未知错误
      

  6.   

    调用方法
    char font[32]="黑体";
    int fontSize=12;
    set_font(hDlg, font, &fontSize);
      

  7.   

    cf.dwMask 缺少CFM_SIZE标志位