VC RichEdit插入表格(RTF形式)

我们知道RichEdit中可以打开并显示RTF文档,要实现在RichEdit中插入表格可以使用OLE方式外,还可以使用RTF 方式。关于RTF格式规范可在微软下载中心下载到,例如1.7版本下载地址:http://www.microsoft.com/download/en/details.aspx?id=22699,详细介绍了关于RTF的规范。另外,网上有《RTF文件格式规范 v1.7》全文翻译的中文版。

    开始菜单→附件→写字板,输入"Hello World",如下图所示:

    然后保存成"test.rtf",用记事本打开此文件,内容为:

1
2
3
4
  {\rtf1\ansi\ansicpg936\deff0\deflang1033\deflangfe2052{\fonttbl{\f0\fnil\fcharset134 \‘cb\‘ce\‘cc\‘e5;}} 
{\*\generator Msftedit 5.41.21.2509;}\viewkind4\uc1\pard\sa200\sl276\slmult1\lang2052\f0\fs22 Hello World\par 

  

这些就是RTF的基本形式。下面测试显示:
1.打开VS2008,建立一个基于CRichEditView的多文档视图Unicode工程,名称取为:CTest_Richedit;
2.在OnInitialUpdate初始化函数,添加以下代码:

01
02
03
04
05
06
07
08
09
10
11
  void CTest_RicheditView::OnInitialUpdate() 

    CRichEditView::OnInitialUpdate();     
    SetMargins(CRect(720, 720, 720, 720)); 
     
    CStringA rtfStr = "{\\rtf1\\ansi\\ansicpg936\\deff0\\deflang1033\\deflangfe2052{\\fonttbl{\\f0\\fnil\\fcharset134 \\‘cb\\‘ce\\‘cc\\‘e5;}}{\\*\\generator Msftedit 5.41.21.2509;}\\viewkind4\\uc1\\pard\\sa200\\sl276\\slmult1\\lang2052\\f0\\fs22 Hello World\\par}"; 
    SETTEXTEX st; 
    st.codepage = 1200; 
    st.flags = ST_SELECTION | ST_KEEPUNDO; 
    SendMessage(EM_SETTEXTEX, (WPARAM)&st, (LPARAM)(LPCSTR)rtfStr); 

3.运行如下图所示:

    对于表格,表现为多个表行的序列。一个表行是一个被分割成单元格的连续段落序列。表行从控制字\trowd开始, \row结束。包含在一个表行中的每个段落必须指定\intbl控制字或者从前一段落继承。一个单元内可能有多个段落;单元由单元格标志(\cell控制字)结束,行由行标志(\row控制字)结束。表行也可以被定位。此时, 表行的每个段落必须具有相同的定位控制字。 表的属性可以从前一行继承;因此,连续的表行可以通过单一的<tbldef>来定义。
    下面测试最基本显示表格的RTF内容,对此表格未进行任何设置,将第6行换成下面语句:

1       CStringA rtfStr = "{\\rtf1\\ansi\\ansicpg936\\deff0\\deflang1033\\deflangfe2052{\\fonttbl{\\f0\\fnil\\fcharset134 \\‘cb\\‘ce\\‘cc\\‘e5;}}{\\*\\generator Msftedit 5.41.21.2509;}\\viewkind4\\uc1\\trowd\\cellx2000\\cellx4000\\intbl\\cell\\cell\\row\\trowd\\cellx2000\\cellx4000\\intbl\\cell\\cell\\row\\par}"; 

运行如下图所示:

    输入文字,如下图所示:

对于表格的各种设置,包括:外框宽度、边距等等,请参考RTF规范文档进行设置。

注意:对于默认的RichEdit20W只支持简单的表,而且在单元格内回车不换行,而RichEdit50W(即Version4.1)可以支持多级表,并且单元格内回车换行。以上的文章内容是基于RichEdit50W的,关于切换到RichEdit50W的介绍,请看《VC2008下CRichEditView加载RichEdit4.1版本》。

参考文章:
1.关于RTF(富文本格式)的使用  http://blog.sina.com.cn/s/blog_5d2a73550100bcth.html
2.An example editor with table and image support   http://www.codeproject.com/KB/docview/Table___Image_editor.aspx

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!http://www.captainbed.net

原文地址:https://www.cnblogs.com/sjwics/p/10461829.html

时间: 2024-10-11 13:12:35

VC RichEdit插入表格(RTF形式)的相关文章

查询表格——建立动态表格,使用ajax输入查询条件将后台数据查询出来以表格的形式展示出来

建立动态表格,使用ajax将前台查询条件传给后台,并将查询结果以表格的形式展示出来. 页面的展示效果如下图所示: 第一步:查询条件的部分: 代码如下: <div class="text-c"> <span style="text-indent: 2em;display: inline-block;font-size:20px">账号:</span> <input type="text" name=&quo

Aspose.Words使用代码插入表格

Aspose.Words是一款功能强大的word文档处理控件,在不需要安装word的条件下,可进行word的创建,修改,转换等操作. Aspose.Words可以简单使用该产品提供的DocumentBuilder类库进行Word表格的插入. DocumentBuilder.StartTable 开始构建一个新的表格DocumentBuilder.InsertCell 插入新的行和单元格到表格DocumentBuilder.Writeln 为当前单元格写入文本DocumentBuilder.End

地图中插入表格——ArcMap篇

在制作专题图的过程中,不但要有地理要素表示空间位置,经常还要在图的周围制作一些表格数据.这里对ArcMap中的插入方法进行总结. 方法一:插入对象 利用菜单中的"插入"-"对象"可向地图添加几乎任何类型的数据.官方帮助说明 同时还可以使用数据所属的应用程序对数据进行编辑. 方法二:属性表添加到布局 创建布局时,可显示它的属性表,以帮助您描述地图上显示的要素.操作方法是在属性表的选项中,选择"将表添加到布局视图",需要注意的问题是,插入后的结果是一

网页制作时,如何在网页中插入表格?

在Dreamweaver中,表格可以用于制作简单的图表,还可以用于安排网页文档的整体布局,起着非常重要的使用.在网页中插入表格的方法非常简单,具体操作步骤如下: 1.打开网页文档,执行"插入""表格"命令 2.弹出"表格"对话框,在对话框中将"行数"设置为3,"列"设置为2,"表格宽度"设置为60% 3.单击"确定"按钮,插入表格 在"表格"对话框

delphi 插入表格HTML代码

<table width="174"  height="76" border="1" align="center" cellpadding="1" cellspacing="1" bordercolor="#000000" bgcolor="#FFFFFF" summary="Text">table的属性widthh

数据库指定库表中的字段进行备份,并以表格的形式定时发送邮件到指定邮箱 ?

备份数据进行定时邮件发送 mkdir -p /opt/module/shell/ mkdir -p /opt/module/shell/sql/revenue.sql mkdir -p /opt/module/shell/csv/revenue #MailTool.jar 放在指定目录下 便于发送邮件使用 可自动生成表格 vim /opt/module/shell/daily_text.sh # !/bin/bash #数据库指定库.表中的字段进行备份,并以表格的形式发送邮件到指定邮箱 #定义变

UEditor插入表格没有边框但有间距

百度编辑器ueditor插入一个表格后,在编辑过程中有表格,但是保存后,在前台网页中没有边框,但有间距,设置方法如下: 在UEditor文件夹下打开ueditor.all.js文件,找到UE.commands['inserttable']方法, 1.在 “html.push('<td”后面添加style="border-width: 1px; border-style: solid;" class="selectTdClass"; 2.在“return '&l

网页五--html插入表格

<html> <body> <html> <body> <p>每个表格由 table 标签开始.</p> <p>每个表格行由 tr 标签开始.</p> <p>每个表格数据由 td 标签开始.</p> <h4>一列:</h4> <table border="1"> <tr> <td>小军</td>

Python以表格的形式打印占用内存Top10的程序列表

此题目涉及到Python对进程的操作.for循环计数循环次数.排序与打印表格等,题目比较简单,效果图如下: 代码如下: #!/usr/bin/python # encoding: utf-8 # -*- coding: utf8 -*- """ Created by PyCharm. File:               LinuxBashShellScriptForOps:performanceOps.py User:               Guodong Crea