我在OnCtlColor函数内设置了对话框上控件的字体,可是程序启动时字体还是不会变化,只有当把对话框移动了一下的时候,字体才会发生改变。请教大家有什么好招啊

解决方案 »

  1.   

    对阿,我就是在OnCtlColor函数里面用了SetFont函数呀
      

  2.   

    CFont不能是局部变量, SetFont在OnInitDialog中调用就行了
      

  3.   

    同意:cheng_young
    注:SetFont(m_font,FALSE);第二个参数最好设为FALSE,消除闪烁。
      

  4.   


    在对话框初始化的时候,对单个控件用pEdit->RedrawWindow()
      

  5.   

    我的Font是成员变量
    我觉得就是在OnInitDialog函数中为每个控件一一调用SetFont太麻烦了,所以想在OnCtlColor函数中统一来设置,可是就是发现这样的话刚开始字体总是变不过来,要动一下对话框才行。
      

  6.   

    你没有定义画刷吧。
    到http://expert.csdn.net/Expert/topic/1998/1998431.xml?temp=.5509302那里看看。
      

  7.   

    可问题是我定义了画刷啊
    if(nCtlColor==CTLCOLOR_BTN)
    {
    pWnd->SetFont(&m_StaticFont,FALSE);
    return m_Brush;
    }
    if(nCtlColor==CTLCOLOR_STATIC)
    {
    pWnd->SetFont(&m_StaticFont,FALSE);
    return m_Brush;
    }
    只有Button的字体能够在对话框刚开始启动就变过来,Static框就要移动一下对话框才行
      

  8.   


    你尝试自己Invalidate一下窗口,或者是UpdateWindows(记不清了),再试试(这个没有验证过)!