打开对话框选中字体之后,关闭对话框再次打开,字体又恢复到默认值!
如何在对话框弹出之前?保留住上次选择的字体!

解决方案 »

  1.   

    将上次选择的字体设置到LOGFONT结构中,然后再调用
      

  2.   

    怎么设置?如下代码
    LOGFONT lf;
    lf.lfUnderline=true;
    CFontDialog dlg;
    dlg.DoModal();
    memcpy(&lf, dlg.m_cf.lpLogFont, sizeof(LOGFONT));打开对话框无下划线!
      

  3.   

    可以写一个CYourFontDialog继承CFontDialog,每次关闭时把选中的Font信息记录下来,下次打开时,再设置到记录下来的Font上。
      

  4.   

    其实,只要使用lplfInitial就可以了。每次关闭时把选中的Font信息记录下来,放到一个全局的变量,比如LOGFONT m_logfont;中,下次打开时:
    CFontDialog dlg(&m_logfont);
    dlg.DoModal();
      

  5.   

    LOGFONT lf;
    lf.lfUnderline=true;
    CFontDialog dlg(&lf,CF_EFFECTS | CF_SCREENFONTS,NULL,NULL);
    dlg.DoModal();
      

  6.   

    your can write or read font information into regedit.
      

  7.   

    比如:定义一个全局的变量(或要调用CFontDialog的类的成员变量)LOGFONT m_logfont; 以及一个辅助变量BOOL m_bFontSel;初值为NULL;CFontDialog dlg(m_bFontSel? &m_logfont : NULL);
    int rn = dlg.DoModal();
    if(rn == IDOK)
    {
        dlg.GetCurrentFont(&m_logfont);
        m_bFontSel = TRUE;
    }
      

  8.   

    上面写错一点点:BOOL m_bFontSel;初值为FALSE;
      

  9.   

    上面写错一点点:BOOL m_bFontSel;初值为FALSE;
      

  10.   

    LOGFONT lf;
    lf.lfUnderline=true;
    CFontDialog dlg(&lf,CF_EFFECTS| CF_SCREENFONTS,NULL,NULL);
    if(dlg.DoModal()==IDOK) {
        memcpy(&lf, dlg.m_cf.lpLogFont, sizeof(LOGFONT));你下滑线的代码
    其他的值初始都没什么问题
    字体名的初始化要用32位的数组来初始化,字体用NULL来结束。
      

  11.   

    LOGFONT lf;
    lf.lfUnderline=true;
    CFontDialog dlg(&lf,CF_EFFECTS| CF_SCREENFONTS,NULL,NULL);
    if(dlg.DoModal()==IDOK) {
        memcpy(&lf, dlg.m_cf.lpLogFont, sizeof(LOGFONT));你下滑线的代码
    其他的值初始都没什么问题
    字体名的初始化要用32位的数组来初始化,字体用NULL来结束。