我正在创建一个简单的GUI来更改Visual C ++中的输入文本格式,并且想知道如何从CFontDialog中获取字体类型。
输入文本从EditBox提取到m_txtEdit,然后传递给m_text。
val meanChildrenSize = people.toList.map(_.children().size).sum.toDouble / people.size
meanChildrenSize: Double = 0.6666666666666666
m_text是CDoc类的成员,应根据用户在CFontDialog中选择的内容进行格式化。
所选字体将传递给LOGFONT m_lf变量,该变量是CTxtDlg类的成员。
应该使CFont m_font等于LOGFONT m_lf。
void CTxtDlg::OnOK()
{
m_txtEdit.GetWindowText(m_text);
CDialog::OnOK();
}
CView类应该输出根据CFont m_font中设置的格式化的CString m_text。
我如何做到这一点?
答案 0 :(得分:1)
基本上,您的问题与CFontDialog
完全无关。 Your comment正在询问如何在CFont结构的情况下创建LOGFONT对象。这就是CFont::CreateFontIndirect成员函数的用途:
if ( !m_font.CreateFontIndirect( &m_lf ) ) {
// handle error
}
// use m_font
答案 1 :(得分:0)
首先向CFont
添加CTxtDlg
:
class CTxtDlg {
....
CFont m_font;
}
然后创建并使用字体:
void CTxtDlg::OnBnClickedButton1()
{
CFontDialog dlg;
int response = dlg.DoModal();
if(response == IDOK) {
dlg.GetCurrentFont(&m_lf);
VERIFY(m_font.CreateFontIndirect(&m_lf));
SetFont(&m_font);
}
}
请注意,据我所知,字体必须在SetFont之后保持有效,因此如果仍然在对话框中设置字体,则无法轻易销毁字体并重新创建字体。