哪位知道怎样修改静态文本的文本字体与颜色?

解决方案 »

  1.   

    已经把控件名从IDC_STATIC改为IDC_STATIC_FONT
    并对它设置了全局变量为m_Font,Control类型的
    可m_Font的方法SetFont()好像不起作用
    知道怎样正确使用这个方法的人麻烦告知一下!
      

  2.   

    可m_Font的方法SetFont()好像不起作用
    +++++++++++++++++++++++++++++++++++++++++
    CWnd::SetFont()
      

  3.   

    已经把控件名从IDC_STATIC改为IDC_STATIC_FONT
    并对它设置了全局变量为m_Font,Control类型的
    可m_Font的方法SetFont()好像不起作用
    知道怎样正确使用这个方法的人麻烦告知一下!
    应该是用静态文本的句柄来调用SetFont吧?
    m_oFont.CreateFont(
    20,                        // nHeight
    0,                         // nWidth
    0,                         // nEscapement
    0,                         // nOrientation
    FW_NORMAL,                // nWeight
    FALSE,                     // bItalic
    FALSE,                     // bUnderline
    0,                         // cStrikeOut
    ANSI_CHARSET,              // nCharSet
    OUT_DEFAULT_PRECIS,        // nOutPrecision
    CLIP_DEFAULT_PRECIS,       // nClipPrecision
    DEFAULT_QUALITY,           // nQuality
    DEFAULT_PITCH | FF_SWISS,  // nPitchAndFamily
    _T("宋体"));               // lpszFacename
    GetDlgItem(IDC_STATIC_FONT)->SetFont(&m_oFont);
    这样是可以的。
      

  4.   

    对话框映射WM_CTLCOLOR消息
    HBRUSH CZilchDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
       // Call the base class implementation first! Otherwise, it may
       // undo what we're trying to accomplish here.
       HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);   // Are we painting the IDC_MYSTATIC control? We can use
       // CWnd::GetDlgCtrlID() to perform the most efficient test.
       if (pWnd->GetDlgCtrlID() == IDC_MYSTATIC && nCtlColor == CTLCOLOR_STATIC )
       {
             LOGFONT logFont;
    memset(&logFont, 0, sizeof(LOGFONT));
    logFont.lfCharSet = GB2312_CHARSET;
    _tcscpy(logFont.lfFaceName, _T("宋体"));
    logFont.lfHeight = -12;
    m_hFont = CreateFontIndirect(&logFont);
             pDC->SelectObject(CFont::FromHandle(m_hFont));   }   return hbr;
    }
      

  5.   

    sakaer(sakaer) 我也用这种办法
    只不过把GetDlgItem(IDC_STATIC_FONT)改成m_Font就不行了
    不知道为什么?
      

  6.   

    只不过把GetDlgItem(IDC_STATIC_FONT)改成m_Font就不行了++++++++++++++++++
    什么意思?告诉你了SetFont是CWnd的方法,不是CFont的方法,不理解吗?
    至于透明背景,正如goodboyws(深夜不眠者)说的,对话框映射WM_CTLCOLOR消息
    然后返回透明画刷就行了
    HBRUSH CZilchDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
       HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);   if (pWnd->GetDlgCtrlID() == IDC_MYSTATIC && nCtlColor == CTLCOLOR_STATIC )
       {
           return static_cast<HBRUSH>(::GetStockObject(NULL_BRUSH));
       }   return hbr;
    }