我在ActiveX下复合了多个Edit控件,我给这个复合控件设置了Font属性,当改变Font的值,下面的多个Edit控件的字体当然不会改变,因此我想获取这个Font属性的值,来改变多个Edit控件的字体,这个该如何解决?感谢指导。

解决方案 »

  1.   

    现在问题在于如何获取当前字体值,并利用Edit的SetFont将字体值设置进去
      

  2.   

    差不多是这个意思,返回CFont
    CEdit c;
    CDC * dc = c.GetDC();
    dc->GetCurrentFont();
      

  3.   

         我自己写了一段源码,但是效果没出来  
            CDC * pdc = GetDC();
            CFont* pOldFont = SelectStockFont(pdc);
    for (int ii = 0; ii < 8; ii++)
    {
    m_Addr[ii].Create(WS_EDIT, CRect(0,0,0,0), this, IDC_ADDR1 + ii);//扩展CEdit
    m_Addr[ii].SetFont(pOldFont);
    }
     pdc->SelectObject(pOldFont);
      

  4.   

    楼主这么尝试下,因为之前返回的CFONT指针什么的生命周期都太短  HFONT   hFont   =   (HFONT)::GetStockObject(SYSTEM_FIXED_FONT);   //hFont放全局变量
      CFont*   pFont   =   CFont::FromHandle(hFont);   
      myEdit->SetFont(pFont);  如果要自己风格的  //这个可以不用管没生命周期
     CFont * f; 
     f = new CFont; 
     f->CreateFont(参数很多自己查一下)程序结束的时候记得delete
      

  5.   

    ActiveX下有个Font配置属性面板,改变面板的值,Edit框里面的字体属性也相应改变,按照MSDN的方法试了一下,也没有做出效果,不过还是非常感谢,你提供的思路
      

  6.   

    MFC ActiveX Controls: Using Fonts