VC中如何将CFontDialog的值赋值给CFont

现在有个程序,用CFontDialog对话框选择字体,然后用LOGFONT接收字体,在把字体信息赋值给CFont类的一个对象,求代码,求大侠指导... 现在有个程序,用CFontDialog对话框选择字体,然后用LOGFONT接收字体,在把字体信息赋值给CFont类的一个对象,求代码,求大侠指导 展开
 我来答
dongdng
2015-08-11 · TA获得超过8158个赞
知道大有可为答主
回答量:9168
采纳率:88%
帮助的人:2352万
展开全部
参考以下代码:

VC:CFontDialog(CClientDC 、GetDeviceCaps()、memset、LOGFONT、memcpy、CFont、SelectObject() 、IsStrikeOut())
//CFontDialog( LPLOGFONT lplfInitial = NULL, DWORD dwFlags = CF_EFFECTS | CF_SCREENFONTS, CDC* pdcPrinter = NULL, CWnd* pParentWnd = NULL );
// Show the font dialog with 12 point "Times New Roman" as the

// selected font.

/* LOGFONT lf;

memset(&lf, 0, sizeof(LOGFONT));

CClientDC dc(this);

lf.lfHeight = -MulDiv(12, dc.GetDeviceCaps(LOGPIXELSY), 72);

strcpy(lf.lfFaceName, "Times New Roman");

CFontDialog dlg(&lf);

dlg.DoModal();*/

/*

CFontDialog dlg;

if (dlg.DoModal() == IDOK)

{

// Create the font using the selected font from CFontDialog.

LOGFONT lf;

memcpy(&lf, dlg.m_cf.lpLogFont, sizeof(LOGFONT));

CFont font;

VERIFY(font.CreateFontIndirect(&lf));

// Do something with the font just created...

CClientDC dc(this);

CFont* def_font = dc.SelectObject(&font);

dc.TextOut(5, 5, "Hello", 5);

dc.SelectObject(def_font);

// Done with the font. Delete the font object.

font.DeleteObject();

}*/

CString fontmessage="";

CFontDialog dlg;

if( IDOK==dlg.DoModal())

{

fontmessage="字体名称:";

fontmessage+=dlg.GetFaceName();

if(1==dlg.IsStrikeOut())

fontmessage+="字体有删除线";

else

fontmessage+="字体没有删除线";

if(1==dlg.IsUnderline())

fontmessage+="字体有下划线";

else

fontmessage+="字体没有下划线";

if(1==dlg.IsBold())

fontmessage+="字体被加粗";

else

fontmessage+="字体没有被加粗";

if(1==dlg.IsItalic())

fontmessage+="字体是斜体";

else

fontmessage+="字体不是斜体";

AfxMessageBox(fontmessage);

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友cb8d0e198
2011-12-12 · TA获得超过1198个赞
知道小有建树答主
回答量:465
采纳率:0%
帮助的人:784万
展开全部
CFontDialog dlg;
LOGFONT lf;
if (dlg.DoModal() == IDOK)
{

dlg.GetCurrentFont(&lf);
HFONT hfont = ::CreateFontIndirect(&lf);

// Convert the HFONT to CFont*.
CFont* pfont = CFont::FromHandle(hfont);

// Do something with the font just created...
CClientDC dc(this);
CFont* def_font = dc.SelectObject(pfont);
dc.TextOut(5, 5, "Hello", 5);
dc.SelectObject(def_font);

// Done with the font. Delete the font object.
::DeleteObject(hfont);
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
orbit681
2011-12-11 · 超过23用户采纳过TA的回答
知道答主
回答量:213
采纳率:0%
帮助的人:122万
展开全部
那个结构体里也有字体等信息的你查MSDN CFontDialog m_cf它的内容中一定有的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式