mfc程序中,为对话框中的编辑框增加一个字体选择按钮,按钮用CFontDialog类对象
CFontDialog对象怎么初始化,才可以使字体选择框出现以后显示的选择的字体是宋体,字形是常规,大小是小四,效果没有选择,颜色是黑的等等,然后编辑框的初始字体就是这个...
CFontDialog对象怎么初始化,才可以使字体选择框出现以后显示的选择的字体是宋体,字形是常规,大小是小四,效果没有选择,颜色是黑的等等,然后编辑框的初始字体就是这个显示的字体,还有如果要把这个编辑框中的字符串传递出去,怎么把这个字体信息传递出去?
展开
3个回答
展开全部
// 初始化 m_Font(logfont类型) m_ColorFont (COLORREF类型)
memset(&m_Font, 0, sizeof(LOGFONT));
CClientDC dc(this);
m_Font.lfHeight = -MulDiv(12, dc.GetDeviceCaps(LOGPIXELSY), 72);
strcpy(m_Font.lfFaceName, "宋体");
m_ColorFont = RGB(0,0,0);
// CFileDialog
CFontDialog fontDlg(&m_Font);
fontDlg.m_cf.rgbColors = m_ColorFont ;
if ( IDOK == fontDlg.DoModal() )
{// 字体选择对话框
fontDlg.GetCurrentFont( &m_Font );
m_ColorFont = fontDlg.GetColor();
}
// 传递方式可将其他地方设置成指针, pDlg为包含上面m_Font成员的对话框指针
LOGFONT* m_pFont = &(pDlg->m_Font);
memset(&m_Font, 0, sizeof(LOGFONT));
CClientDC dc(this);
m_Font.lfHeight = -MulDiv(12, dc.GetDeviceCaps(LOGPIXELSY), 72);
strcpy(m_Font.lfFaceName, "宋体");
m_ColorFont = RGB(0,0,0);
// CFileDialog
CFontDialog fontDlg(&m_Font);
fontDlg.m_cf.rgbColors = m_ColorFont ;
if ( IDOK == fontDlg.DoModal() )
{// 字体选择对话框
fontDlg.GetCurrentFont( &m_Font );
m_ColorFont = fontDlg.GetColor();
}
// 传递方式可将其他地方设置成指针, pDlg为包含上面m_Font成员的对话框指针
LOGFONT* m_pFont = &(pDlg->m_Font);
展开全部
CFontDialog( LPLOGFONT lplfInitial = NULL, DWORD dwFlags = CF_EFFECTS | CF_SCREENFONTS, CDC* pdcPrinter = NULL, CWnd* pParentWnd = NULL );
第一个参数设置默认字体,
typedef struct tagLOGFONT {
LONG lfHeight;
LONG lfWidth;
LONG lfEscapement;
LONG lfOrientation;
LONG lfWeight;
BYTE lfItalic;
BYTE lfUnderline;
BYTE lfStrikeOut;
BYTE lfCharSet;
BYTE lfOutPrecision;
BYTE lfClipPrecision;
BYTE lfQuality;
BYTE lfPitchAndFamily;
TCHAR lfFaceName[LF_FACESIZE];
} LOGFONT;
LOGFONT font;
//设置font初始值
CFontDialog dlg(&font, CF_EFFECTS );
dlg.DoModal();
dlg.GetCurrentFont (&font);
font就是你选择的字体
第一个参数设置默认字体,
typedef struct tagLOGFONT {
LONG lfHeight;
LONG lfWidth;
LONG lfEscapement;
LONG lfOrientation;
LONG lfWeight;
BYTE lfItalic;
BYTE lfUnderline;
BYTE lfStrikeOut;
BYTE lfCharSet;
BYTE lfOutPrecision;
BYTE lfClipPrecision;
BYTE lfQuality;
BYTE lfPitchAndFamily;
TCHAR lfFaceName[LF_FACESIZE];
} LOGFONT;
LOGFONT font;
//设置font初始值
CFontDialog dlg(&font, CF_EFFECTS );
dlg.DoModal();
dlg.GetCurrentFont (&font);
font就是你选择的字体
追问
CFontDialog dlg(&font, CF_EFFECTS );
用这个font设置的值去初始化对话框,这个font怎么设置才能让字体是宋体,字形是常规,大小是小四,效果没有选择,颜色是黑的等等,还有我在编辑对话框中设置了一个CFont对象m_font去关联这个选择的字体或者初始化的字体,然后怎么把这个字体传递到其他地方去,比如我在视图中也有个CFont对象,怎么把这2个对象等同起来?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
CPaintDC dc(this);
LOGFONT lf;
CFont *p;
CFontDialog dlg;
dlg.DoModal();
dlg.GetCurrentFont(&lf);
font.CreateFontIndirect(&lf);
p=dc.SelectObject(&font);
dc.TextOut(10,10,"你是谁?");
dc.SelectObject(p);
如果不在onPaint函数中使用,把CPaintDC 改为CWindowDC即可
希望对你有帮助
LOGFONT lf;
CFont *p;
CFontDialog dlg;
dlg.DoModal();
dlg.GetCurrentFont(&lf);
font.CreateFontIndirect(&lf);
p=dc.SelectObject(&font);
dc.TextOut(10,10,"你是谁?");
dc.SelectObject(p);
如果不在onPaint函数中使用,把CPaintDC 改为CWindowDC即可
希望对你有帮助
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询