从 CFontDialog 获取字体
Getting font from CFontDialog
我正在创建一个简单的GUI来更改Visual C++中的输入文本格式,并想知道如何从CFontDialog获取字体类型。
输入文本从编辑框提取到m_txtEdit,然后传递给m_text。
void CTxtDlg::OnOK()
{
m_txtEdit.GetWindowText(m_text);
CDialog::OnOK();
}
m_text是 CDoc 类的成员,应根据用户在 CFontDialog 中选择的内容进行格式化。
所选字体将传递给 LOGFONT m_lf变量,该变量是 CTxtDlg 类的成员。
CFont m_font应等于 LOGFONT m_lf。
void CTxtDlg::OnBnClickedButton1()
{
CFontDialog dlg;
int response = dlg.DoModal();
dlg.GetCurrentFont(&m_lf);
}
CView 类应输出根据 CFont m_font 中设置的内容格式化的 CString m_text。
我该如何实现此目的?
本质上,您的问题与CFontDialog
完全无关。您的评论是在问,如何在给定 LOGFONT 结构的情况下创建 CFont 对象。这就是 CFont::CreateFontIndirect 成员函数的用途:
if ( !m_font.CreateFontIndirect( &m_lf ) ) {
// handle error
}
// use m_font
首先在
CTxtDlg
中添加一个CFont
:
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 之后必须保持有效,因此如果仍在对话框中设置字体,则无法轻松销毁字体并重新创建它。
相关文章:
- C++为构建时间获取QDateTime的可靠方法
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 使用指针从C++中的数组中获取最大值
- 如何获取std::result_of函数的返回类型
- 在C++中测量postscript字体宽度
- 如何获取控制面板设置值,如字体大小
- 使用 TTF_RenderText() 加载字体时获取段错误 TTF_OpenFontRW()
- 如何获取字体数据以嵌入到 PDF 中?
- 如何获取具有 Freetype2 的真正类型字体支持的代码点列表 C++
- ID3DXFont :文本被拉伸,如何获取字体的宽度和高度?
- 从字体名称获取 TrueType 字体"post"表
- 从 CFontDialog 获取字体
- 如何获取样式表设置的Qt中小部件的字体
- 从 C++/Windows 中的名称和样式获取字体文件路径
- 从已安装的窗口光栅(位图)字体直接获取位图
- 如何使用 fontconfig 获取字体列表 (C/C++)
- 获取基于字体句柄(HFONT)的字体文件名
- 从带字体的字符串中获取像素数据的简单方法
- 直接写入:获取字体的高度