本人属半路出家,自学vc++有两年之久。遇到一个问题有三个多月了,遍尝各种方法均无果。我将此问题详述如下:我想做一个包有richedit的ocx,现在想在ocx中实现几个方法。当外界调用这些方法时,可以达到如下目的:在richedit中的当前光标位置插入自定义行数和列数的表格;删除表格中选定的单元格;合并表格中选定的相关单元格。总之,类似于word中的实现表格功能的方式,但是是完全是用代码实现(借用现有的表格类源码),而不是用ole等方式。我现在手里有一个表格类的源代码,也是vc的,这个表格类继承于Cwnd类,其中就有几个方法实现了自定义行数和列数表格的绘制、单元格的删除、合并等。
-------------------------------------------------------------------------------------------------------------遇到很多问题,比如当插入表格,那文字的位置等该如何处理?比如richedit中第一至第三行有文字,当我在第一行的开头插入光标,并想在此处插入表格,那原来的文字是否要移位,此时该如何处理??删除表格也是,表格后面的文字是否要向前移位??总之诸如此类的问题很多,没有法子弄清楚。希望csdn各路高手走过路过,驻足看看。我能最后碰碰运气。
-------------------------------------------------------------------------------------------------------------遇到很多问题,比如当插入表格,那文字的位置等该如何处理?比如richedit中第一至第三行有文字,当我在第一行的开头插入光标,并想在此处插入表格,那原来的文字是否要移位,此时该如何处理??删除表格也是,表格后面的文字是否要向前移位??总之诸如此类的问题很多,没有法子弄清楚。希望csdn各路高手走过路过,驻足看看。我能最后碰碰运气。
你说不想通过ole实现是什么意思
重写richedit实现表格功能?
反正我是没做过
而且也不想尝试
你是不是在研究DirectUI
我是想做个包有richedit的ocx,richedit具有一独特的功能
何必这么麻烦呢?直接插入一个word控件不更好吗?
还需要一些word所没有的功能。所以不能直接插入一个word控件
所有操作都生成rtf,编码整合后再输入到richedit中。
将rtf中表格段与你的表格关联,当你操作表格时,只需要改变本段落内容,然后再将这段rtf整合回去。"比如当插入表格,那文字的位置等该如何处理"
这个肯定要向后移,你是插入嘛。当然具体怎么处理,就看你的需求了。
http://www.cnpopsoft.com/article.asp?id=18可以结贴了
我试过了用rtf编码的方式来实现表格的插入等,但是有一个很大的问题:这些表格的行高和列宽是事先设定的,无法像word那样在界面里手动进行自由调整(并非用代码,而是纯粹手动)。而且表格的单元格的删除、合并、拆分等还没有试过。
楼主是想在rich eidt里面放一个表格控件(从CWnd派生的控件),然后想让这个控件像word那样可以编辑(增删行列等),还得让这个表格控件嵌入在edit周围的文字里。我觉得思路就有问题,edit本身就可以显示word那样的表格
例如从excel复制一个三行三列的表格,各单元格内容如下
a1 b1 c1
a2 b2 c2
a3 b3 c3将excel这个三行三列复制,然后粘贴到rich edit里,然后可以看到TextRtf的值实际上是:
{\rtf1\ansi\ansicpg1252\deff0{\fonttbl{\f0\fnil\fcharset134 \'cb\'ce\'cc\'e5;}{\f1\fnil\fcharset0 MS Sans Serif;}}
{\colortbl ;\red0\green0\blue0;}
\viewkind4\uc1\trowd\trgaph30\trleft-30\cellx1050\cellx4199\cellx5279\pard\intbl\cf1\lang2052\f0\fs24 a1\cell b1\cell c1\cell\row
\intbl a2\cell b2\cell c2\cell\row
\intbl a3\cell b3\cell c3\cell\row
\pard\cf0\f1\fs17
\par }
这些东西。建议楼主还是从rtf的文件格式入手。26楼已经给出了rtf的文件格式,可以结贴了。
你还是想要所见即所得的表格编辑功能啊,继承CRichEditCtrl,在里面实现鼠标拖动调整表格大小,不是什么难事。在WM_MOUSEMOVE里画调整表格的虚线,改变鼠标指针。根本是不需要在CRichEditCtrl里放一个Grid控件的。
继承CRichEditCtrl,在里面实现鼠标拖动调整表格大小,不是什么难事。在WM_MOUSEMOVE里画调整表格的虚线,改变鼠标指针。 这个实在不知道如何入手?这个要是实现了,我就算彻底信服了。就可以结贴了。高手能否给点思路,最会能贴上具体代码。我是第一菜鸟。一个在黑暗中摸索的菜鸟。
要是这个问题解决了,你是我心中的第一高手。万分感谢!