为了能方便的更改如背景颜色,字体等属性。我使用Microsoft Forms2.0 Label控件取代传统的Static控件。
设置其它属性都还OK,但是在设置Font属性的时候出现了问题。ClabelControl类没有自己的SetFont函数,只有一个GetFont,并且返回值不是CFont而是COleFont。ClabelControl继承自CWnd,想必它直接使用了CWnd::SetFont。可是做下面的事情的时候,完全没有效果m_stFont.CreatePointFont(120,"Arial"); 
m_Static.SetFont(&m_stFont);m_stFont是对话框的一个成员是CFont类型。
m_Static是ClabelControl类型,并且它是调用Create函数动态创建的。如果哪位用过ClabelControl或者遇到同样的问题,有解决方法的请不吝赐教,谢谢!

解决方案 »

  1.   

    没有用过, 但书遇到过类似的问题
    试试消息 WM_SETFONThFont = (HFONT)::SendMessage(hWnd, WM_GETFONT, 0, 0);
    GetObject(hFont, sizeof(LogFont), &LogFont);::SendMessage(::GetDlgItem(hwndDlg, INPUT_ID_BTN1), WM_SETFONT, (LPARAM)hFont, MAKELPARAM(TRUE, 0));
      

  2.   

    中间少了句 hFont = CreateFontIndirect(&LogFont);
      

  3.   

    这个建议不错。试试看。
    m_stFont.CreatePointFont(120,"Arial"); 
    m_Static.SetFont(&m_stFont);
    同样是上面的代码,如果m_Static是CStatic类型,那么就可以达到目的。
    个人感觉可能是CLabelControl在实现的时候疏漏了些东西。呵呵个人观点。我倒很希望是自己错了。这样可以少一些麻烦。
      

  4.   

    试过了zzz3265(zzz)的方法,好像还是不行,CLabelControl似乎对SetFont操作没有任何的反映。
    苦恼啊!
      

  5.   

    呵呵 终于可以了
             COleFont font=m_lable.GetFont();
    CY cy;
    cy.int64=240000;
    font.SetSize(cy);
    m_lable.SetRefFont(font);
    只怪我自己不够仔细,光去找SetFont了,其实CLabelControl自带一个SetRefFont。
    虚惊一场,哈哈。同样谢谢zzz3265(zzz)