VisualC文档内容显示及字体改变代码

上传人:宝路 文档编号:17403363 上传时间:2017-11-11 格式:DOCX 页数:4 大小:42.66KB
返回 下载 相关 举报
VisualC文档内容显示及字体改变代码_第1页
第1页 / 共4页
VisualC文档内容显示及字体改变代码_第2页
第2页 / 共4页
VisualC文档内容显示及字体改变代码_第3页
第3页 / 共4页
VisualC文档内容显示及字体改变代码_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《VisualC文档内容显示及字体改变代码》由会员分享,可在线阅读,更多相关《VisualC文档内容显示及字体改变代码(4页珍藏版)》请在金锄头文库上搜索。

1、【例 Ex_Text】显示文档内容并改变显示的字体 用 MFC AppWizard(exe)创建一个单文档应用程序Ex_Text,在创建向导的第 6步将视图的基类选择为CScrollView。由于视图客户区往往显示不了文档的全部内容,因此需要视图支持滚动操作。 为 CEx_TextDoc类添加 CStringArray类型的成员变量m_strContents,用来将读取的文档内容保存。 在 CEx_TextDoc:Serialize函数中添加读取文档内容的代码:void CEx_TextDoc:Serialize(CArchive& ar)if (ar.IsStoring().else CSt

2、ring str;m_strContents.RemoveAll();while (ar.ReadString(str) m_strContents.Add(str); 为 CEx_TextView类添加 LOGFONT类型的成员变量m_lfText,用来保存当前所使用的逻辑字体。并在CEx_TextView类构造函数中添加 m_lfText的初始化代码:CEx_TextView:CEx_TextView()memset(&m_lfText, 0, sizeof(LOGFONT);m_lfText.lfHeight = -12;m_lfText.lfCharSet = GB2312_CHARS

3、ET;strcpy(m_lfText.lfFaceName, 宋体); 用 MFC ClassWizard为 CEx_TextView类添加WM_LBUTTONDBLCLK(双击鼠标左键)的消息映射函数,并增加下列代码:void CEx_TextView:OnLButtonDblClk(UINT nFlags, CPoint point) CFontDialog dlg(&m_lfText);if (dlg.DoModal() = IDOK) dlg.GetCurrentFont(&m_lfText);Invalidate();CScrollView:OnLButtonDblClk(nFlag

4、s, point); 这样,当双击鼠标左键后,就会弹出字体对话框,从中可改变字体的属性,单击确定按钮后,执行 CEx_TextView:OnDraw中的代码。 在 CEx_TextView:OnDraw中添加下列代码:void CEx_TextView:OnDraw(CDC* pDC)CEx_TextDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);/ 创建字体CFont cf;cf.CreateFontIndirect(&m_lfText);CFont* oldFont = pDC-SelectObject(&cf);/ 计算每行高度TEXTMETRI

5、C tm;pDC-GetTextMetrics(&tm);int lineHeight = tm.tmHeight + tm.tmExternalLeading;int y = 0;int tab = tm.tmAveCharWidth * 4; / 为一个 TAB设置 4个字符/ 输出并计算行的最大长度int lineMaxWidth = 0;CString str;CSize lineSize(0,0);for (int i=0; im_strContents.GetSize(); i+) str = pDoc-m_strContents.GetAt(i);pDC-TabbedTextOu

6、t(0, y, str, 1, &tab, 0);str = str + A; / 多计算一个字符宽度lineSize = pDC-GetTabbedTextExtent(str, 1, &tab);if ( lineMaxWidth SelectObject(oldFont);/ 多算一行,以滚动窗口能全部显示文档内容int nLines = pDoc-m_strContents.GetSize() + 1;CSize sizeTotal;sizeTotal.cx = lineMaxWidth;sizeTotal.cy = lineHeight * nLines;SetScrollSizes(MM_TEXT, sizeTotal);/ 设置滚动逻辑窗口的大小 编译运行并测试,打开任意一个文本文件,结果如图 14.4所示。图 14.4 Ex_Text 运行结果

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号