m_Font.CreateFont( 15, 0, 0, 0, 100, FALSE, FALSE, 0, 

GB2312_CHARSET, OUT_DEFAULT_PRECIS,

CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, 

DEFAULT_PITCH | FF_MODERN, "华文新魏" ) ; SetFont(&m_Font);
m_Font做为类成员变量声明

解决方案 »

  1.   

    CFont m_CurrentFont;CFontDialog FontDialog;
    if(FontDialog.DoModal()!=IDOK)
    return;
    m_CurrentFontColor=FontDialog.GetColor();
    m_CurrentFont.DeleteObject();
    m_CurrentFont.CreateFontIndirect(&FontDialog.m_lf);我以前是这么做的
      

  2.   

    同意.或者至少要从文件对话框中选一个字体然后把得到的logfont值记住.(以后用这里面的值建立CFont)
      

  3.   

    在应用VC++进行程序设计时,为了使界面美观,往往需要改变对话框控件中文本的字体及大小。
      问题的提出
      要改变对话框控制中文的字体及大小,可以采用多种方式,在基于资源模板的对话框中改变控件的字体更是一件很容易的事。点击对话框资源模板的属性页中的“字体”按钮,选择所需的字体即可改变对话框控制中文本的字体及大小,可是这种方法并非在任何时候都奏效。  比如,我在程序中以插入ActiveX控件的方式做一个多页对话框时,AppWizard自动为每一页生成一个对话框资源模板,我在资源模板中建立一个静态文本控制并写上汉字,然后应用上述方法改变字体后,运行程序发现属性页中的文字并没有变为我所设置的字体,依然按系统默认的字体显示。
      解题思路
      用在程序中创建自定义字体,并重载OnSetFont()函数的方法无法改变字体及大小(后经过跟踪调试才发现,原来基类的OnSetFont()函数体是空的)。于是我想到用发送WM—SetFont消息的方法改变字体,终于大功告成!
      程序代码
      在对话框的类中增加两个public型变量:  public:  Logfont lf;  CFont font;  在OnInitDialog()函数中插入相关代码。  lf.lfHeight=25; //字体高度  lf.lfWidth=20; //字体宽度  lf.lfEscapement=0;  lf.lfOrientation=0;  lf.lfWeight=400;  lf.lfItalic=false;  lf.lfUnderline=false;  lf.lfCharSet=Default_Charset;  lf.lfStrikeOut=False;  lf.lfOutPrecision=Out_Default_Precis;  lf.lfClipPrecision=Clip_Default_Precis;  lf.lfQuality=Default_Quality ;  lf.lfPitchAndFamily=Default_Pitch;  strcpy( lf.lfFaceName,″ ″);  font.CreateFontIndirect(&lf);  SendMessageToDescendants  (WM_SetFont,(WPapam)HFont (font ),  Makelparam ( True ,0 )) ;
      

  4.   

    Dialog字体与其子控件的字体无关
    不如直接设控件的字体
      

  5.   

    这是设置一个静态文本框的字体
    把字体变大
    LOGFONT logfont;
    CFont *pfont = m_ctrShowMessage.GetFont();
    pfont->GetLogFont( &logfont );
    logfont.lfHeight =logfont.lfHeight * 1.5;
    logfont.lfWidth  = logfont.lfWidth * 1.5;
    CFont font;
    font.CreateFontIndirect(&logfont);
    m_ctrShowMessage.SetFont(&font);
      

  6.   

    对话框创建之时,系统根据对话框模板指定的字体来初始化对话框上各控件的字体
    但创建之后,不可能设置一下对话框的字体就希望各控件的字体也跟着改变,需要自己显式地设定。还好也不麻烦,加上几句话就行了。m_Font.CreateFont( 15, 0, 0, 0, 100, FALSE, FALSE, 0, 
                      GB2312_CHARSET, OUT_DEFAULT_PRECIS,
                      CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, 
                      DEFAULT_PITCH | FF_MODERN, "华文新魏" ) ; CWnd *pWndChild;
    pWndChild = GetWindow(GW_CHILD);
    while(pWndChild)
    {
        pWndChild->SetFont(&m_Font);
        pWndChild = pWndChild->GetWindow(GW_HWNDNEXT);
    }SetFont(&m_Font);
    Invalidate();
    UpdateWindow();
      

  7.   

    对话框创建之时,系统根据对话框模板指定的字体来初始化对话框上各控件的字体
    但创建之后,不可能设置一下对话框的字体就希望各控件的字体也跟着改变,需要自己显式地设定。还好也不麻烦,加上几句话就行了。m_Font.CreateFont( 15, 0, 0, 0, 100, FALSE, FALSE, 0, 
                      GB2312_CHARSET, OUT_DEFAULT_PRECIS,
                      CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, 
                      DEFAULT_PITCH | FF_MODERN, "华文新魏" ) ; CWnd *pWndChild;
    pWndChild = GetWindow(GW_CHILD);
    while(pWndChild)
    {
        pWndChild->SetFont(&m_Font);
        pWndChild = pWndChild->GetWindow(GW_HWNDNEXT);
    }SetFont(&m_Font);
    Invalidate();
    UpdateWindow();