我创建两个CStatic控件。一种属性设置为透明模式;另一种属性设置为透明模式。另一个是正常的。
更改字体大小后,可以更改一个,但是设置的透明模式之一不更改大小。

有人知道为什么吗?

//////////////////////////////////////////////////
/* Resource File */
LTEXT           "This Is Normal Text.",IDC_FONT2,7,119,303,21,WS_BORDER
LTEXT           "This Include Transparent.",IDC_FONT,7,7,306,21,WS_BORDER | NOT WS_GROUP | WS_TABSTOP,WS_EX_TRANSPARENT


/* FontTest.CPP */
class CFontSizeDlg : public CDialogEx
{
public:
    CStatic m_myFont;
    CStatic m_myFont2;
}

/* FontTest.CPP */
void CFontSizeDlg::DoDataExchange(CDataExchange* pDX)
{
    CDialogEx::DoDataExchange(pDX);
    DDX_Control(pDX, IDC_FONT, m_myFont);
    DDX_Control(pDX, IDC_FONT2, m_myFont2);
}

void CFontSizeDlg::OnBnClickedButton2()
{
    CFont hNewFont;
    LOGFONT lf;                        // Used to create the CFont.

    CFont *currentFont = GetFont();
    currentFont->GetLogFont(&lf);
    lf.lfHeight = 25;
    lf.lfWidth = 10;

    hNewFont.DeleteObject();
    hNewFont.CreateFontIndirect(&lf);    // Create the font.

     // Use the font to paint a control.
    m_myFont2.SetFont(&hNewFont);
    m_myFont.SetFont(&hNewFont);

    // hNewFont.Detach(); // will create GDI leak
    hNewFont.DeleteObject();
}

最佳答案

您需要确保“新”字体的范围与静态控件相同。在您的示例中,按钮事件处理程序完成时,字体被销毁。尝试使hNewFont成为成员变量并设置一次。

10-08 06:53