Я создаю два элемента управления 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 переменной-членом и установить ее один раз.
Других решений пока нет …