在Android中实现富文本编辑器?
我想知道在Android中实现丰富的文本编辑器是否有任何好的选择.请注意,我说的是可以在Android应用程序中使用的丰富文本编辑器,而不是使用HTML和JavaScript嵌入网页中的一个. 我的要求是: 基本格式(颜色,字体,高光,大胆,斜体,下划线等) 超链接 内联图像 子弹列表和编号列表 内联表(只有单元格内的内容是可编辑的,而不是表结构) 您可以看到,这几乎与Windows上的典型Richedit控制非常相似. 这是我到目前为止所做的一些努力(调查和原型): 使用WebView 我尝试使用WebView控件将HTML片段加载.内容变得可编辑,并且由于HTML,我想它可以满足我的大多数要求.但这有几个问题: (致命)没有文字范围.用户将不知道他/她的打字字符将在哪里插入. 默认情况下,在屏幕上软键盘不可见.用户必须长按菜单按钮来启动键盘的技巧.但是我认为这是一种非常糟糕的用户体验.此外,屏幕布局未正确重新安排,文本插入点有时会被
0 2024-02-14
编程技术问答社区
使用较新的RichEdit版本?
我尝试在C#上使用RichTextbox,发现它太慢了,无法使用文本数千行长.谷歌搜索后,我发现这是因为.net默认使用RichEdit 2.0,而解决方案是使用Richedit 5.0. . 它工作正常,文本在几秒钟内而不是分钟显示.但是,作为那种不在乎个人项目中兼容性的人,我想找到后来的Richedit版本.我发现最新版本是8.0,整个版本以Riched20.dll的形式发货,部分在msftedit.dll中. http://blogs.msdn.com/b/murrays/archive/2012/03/03/richedit-8-0-preview.aspx 但是,MSDN的文档以4.1停止,(我认为是)该项目的开发人员声称他们不再在上面的博客中进行公共文档. 到目前为止,我已经能够明确地运行msftedit.dll的Richedit 2.0和5.0,但是所有其他版本都避开了我.例如,尽管约翰·克伦肖(John Crenshaw)的评论声称Richedi
4 2024-01-04
编程技术问答社区
有什么好的VB6的TDD工具或资源吗?
是的,我知道我落后于时代,但是我在这里得到的是一个古董VB6编辑器应用程序,我相信没有人会很快升级到.NET.它使用了几个第三方DLLS工具,并且由于它仍在使用良好的旧富人控制,我基本上只能使用此工具来提高自己的错误农场. 足够了,我正在尝试查看是否可以使用TDD,以便我可以开始为我需要修复的每个行为/功能编写单元测试,所以我迟早可以拥有一个完整的回归测试套件.这个工具.即使将来,如果我们升级到.NET,我认为我写的大多数测试都应该有助于验证正确的行为,并且也应该升级到.NET版本,我猜. . 一些基本的谷歌搜索将我发送到此工具,请致电 Simpple vbunit ,但是我找不到足够的指南,等等.要让我开始,是的,我也不是熟练的VB6:( 所以有人知道任何好处 我使用TDD的工具/资源 对于这个VB6应用程序? [最好以防万一,最好升级到.net.] 或我实际上可以使用这些单元 .NET的测试框架,即Nunit, 等通过解决方法吗? 或者还有一个更棒的 完成此操作的
0 2024-01-02
编程技术问答社区
在执行语法高亮时,临时禁用C#丰富编辑的撤销缓冲区
我已经有一个相当不错的 我认为我没有时间实现Scintilla.net编辑器只是为了解决这个问题.有什么建议吗? 解决方案 您必须自己处理撤消/重做,而不是依靠RTB,这意味着挂在键盘事件中以聆听Ctrl+Z等. . 您可以看到来自CodeProject的作者是如何为类似的RTB-Overrdide语法突出显示编辑器的:其他解决方案 几乎正如上面所说的@karl Edwall所说的那样:使用EM_GETOLEINTERFACE获得IRichEditOle接口并查询IID_ITextDocument. 一旦得到了,请使用(而不是从其他答案中冻结/解冻)Undo()方法: Undo(tomSuspend,NULL);暂时暂停撤消 Undo(tomResume,NULL);再次恢复 (请参阅 http://support.microsoft.com/kb/kb/199​​852 ) 它需要Richedit 3.0,但这是因为Windows XP SP1.
0 2023-12-10
编程技术问答社区
TRichEdit和URL高亮问题
我正在使用当前代码在trichedit上突出显示网址: procedure TForm1.WndProc(var Message: TMessage); var p: TENLink; strURL: string; begin if (Message.Msg = WM_NOTIFY) then begin if (PNMHDR(Message.lParam).code = EN_LINK) then begin p := TENLink(Pointer(TWMNotify(Message).NMHdr)^); if (p.Msg = WM_LBUTTONDOWN) then begin SendMessage(RichEdit1.Handle, EM_EXSETSEL, 0, Longint(@(p.chrg))); strURL := RichEdit1.SelText;
0 2023-12-06
编程技术问答社区
原始Win32中的丰富编辑控制
丰富的编辑控件的文档真的像看起来一样糟糕(错误?)吗?现在,我正在手动调用LoadLibrary(" RichEdeD20.dll"),以便获得丰富的编辑控件以显示. Rich编辑的文档在使用Rich编辑控件的第一个代码样本中证明了这一点. 它谈论调用initcommoncontrolsex()添加视觉样式,但没有提及要传递的标志. 是否有更好的方法来加载丰富的编辑控制? -us/library/bb787877(vs.85).aspx 这是我唯一可以编写的代码来使其起作用: #include "Richedit.h" #include "commctrl.h" INITCOMMONCONTROLSEX icex; icex.dwSize = sizeof(INITCOMMONCONTROLSEX); icex.dwICC = ICC_USEREX_CLASSES; //Could be 0xFFFFFFFF and it still wouldn't
14 2023-12-06
编程技术问答社区
亚洲字符的显示(使用Unicode)。与使用ExtTextOut相比,在RichEdit控件中显示的字符间距有差异
这张照片说明了我的困境: 所有字符的大小似乎都是相同的,但是与我使用ExtTextout相比,在富裕的控制中显示时之间的空间不同. 我想展示与Richedit Control(理想情况下)相同的字符,以保留包裹位置. 任何人都可以告诉我: a)哪个更正确的表示? b)为什么Richedit控件显示亚洲字符之间没有差距的文本? c)是否有任何方法可以使ExtTextout在绘制这些字符时重现Richedit控制的行为? d)如果我正在使用Asian版本的Windows? ,这会有什么不同 也许我很乐观,但是如果有人提供任何提示,我会非常有兴趣听到. 以防万一: 这是我的文字: 快的棕色狐狸跳在懶惰狗1 2 3 4 5 6 7 8 9 0 向亚洲读者道歉,这仅仅是为了测试我们的Unicode插入,我什至不知道字符是从中获取的语言,更不用说它们是否意味着什么 为了通过将这些字符粘贴到富裕的控制(例如WordPad)中查看
6 2023-12-06
编程技术问答社区
如何在Rich Edit 4中设置字体?
我想将Win32程序中Richedit Control的字体更改为Consolas.当我尝试执行以下操作时: CHARFORMAT2 cformat; cformat.dwMask = CFM_FACE; cformat.cbSize = sizeof(cformat); cformat.szFaceName = "Consolas"; 在最后一行中说 表达式必须是可修改的值 这里有什么问题? 问: devjeet 解决方案 来自文档,您可以看到szFaceName是一个数组.您不能以这种方式分配到数组. (这就是编译器试图告诉您的.
10 2023-12-04
编程技术问答社区
CRichEditCtrl::GetLine()在单字符行上调用时添加了虚假的'r'?
我尝试使用CRichEditCtrl::GetLine()在MFC应用程序中以unicode模式为VS2015构建的MFC应用程序中的给定线的文本,并在Windows 10上运行. 我写了此辅助功能: CString GetLine(CRichEditCtrl& richEdit, const int lineNum) { int lineLength = richEdit.LineLength(richEdit.LineIndex(lineNum)); if (lineLength == 0) { // Empty line return CString(); } const int kMinBufferLength = sizeof(int) / sizeof(wchar_t); const int bufferLength = max(kMinBufferLength, lineLengt
6 2023-12-04
编程技术问答社区
如何改变Rich Edit控件的下划线颜色(Win32/C)
我正在寻找一种在丰富的编辑控件中制作红色弯曲强调的方法(我将4.1版与msftedit.dll一起使用).我能够使用此代码生产尖顶的强调: CHARFORMAT2 format; format.cbSize = sizeof(format); format.dwMask = CFM_UNDERLINETYPE; format.bUnderlineType = CFU_UNDERLINEWAVE; SendMessage(hWndEdit,EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&format); MSDN文档没有指定如何更改下文的颜色,仅需文本(带有下文)和文本背景.我找到了一些代码,说要使用下部的nibble进行下划线类型(CFU_UNDERLINEWAVE)和颜色的上部.所以我尝试了: format.bUnderlineType = CFU_UNDERLINEWAVE | 0x50; 但这不起作用. 更新 我已
2 2023-12-04
编程技术问答社区
如何从Rich Edit Win API获得RTF格式的文本?
(对不起,我疯狂的英语) 我想以RTF格式获得丰富的编辑中的所有文本,而不是纯文本.我尝试使用em_streamout的sendmessage()将直接编辑编辑为文件,但是我无法将内容保存到特定变量,例如lpwstr.请记住,只能赢得API,而不是MFC.感谢您的帮助! 解决方案 您可以将变量传递给EM_STREAMOUT回调,以便根据需要进行更新,例如: DWORD CALLBACK EditStreamOutCallback(DWORD_PTR dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb) { std::stringstream *rtf = (std::stringstream*) dwCookie; rtf->write((char*)pbBuff, cb); *pcb = cb; return 0; } . std::stringstream rtf; EDITSTREAM e
2 2023-12-04
编程技术问答社区
Visual c++在richedit框中加载包含图像和文本的rtf文件?
我目前正在从事一个项目.我有一个RTF文件,其中包含一些文本和图像.我需要在Visual C ++中显示从RTF到RichTextbox的这些图像和文本.我们不使用.NET框架或MFC的框架,因此所有内容仅在Visual C ++中. 我不知道该怎么做.如果有人可以指导我,那将真的很有帮助.预先感谢. 解决方案 RichTextbox无法加载HTML.它只能加载RTF或纯文本. 有第三方组件可以将HTML转换为RTF,但是它们并没有做得很好,尤其是在处理图像时.我对我的粘性笔记产品Notezilla进行了深入的研究. 您可以使用Web浏览器控件显示您的HTML.
2 2023-11-20
编程技术问答社区
获取丰富编辑库的版本
全部, 是否可以获取程序使用的Richedit Control的版本? | Version | Class name | Library | Shipped with | New features |------------|---------------|--------------|-----------------| | 1.0 | "RICHEDIT" | Riched32.dll | Windows 95 | | 2.0 | "RichEdit20W" | Riched20.dll | Windows 98 | ITextDocument | 3.0 | "RichEdit20W" | Riched20.dll | Windows 2000 | ITextDocument2 | 3.1 | "RichEdit20W" | Riched20.dl
2 2023-11-18
编程技术问答社区
迭代结构;在RichEdit框中轻松地显示结构字段和值
是否有一种更简单的方法来显示struct字段及其在RichEdit控制中的相应值? 这就是我现在正在做的: AnsiString s; s = IntToStr(wfc.fontColor); RichEdit1->Lines->Append(s); 等... 有没有比单独打电话更容易的方法?我想阅读一个二进制文件,然后在我正在构建的小型实用程序的A RichEdit控件中显示相应的结构,但找不到其他方法.我知道如何读取二进制文件并将这些值读取到struct中. 解决方案 // Your existing struct struct Foo { int i; bool j; char k[100]; }; // Generate an adapter allowing to view "Foo" as a Boost.Fusion sequence BOOST_FUSION_ADAPT_STRUCT( Foo, (int, i) (bool, j) (ch
4 2023-11-11
编程技术问答社区
检测在RichEdit中点击URL的情况
我正在尝试更新Richedit,以便它检测到URL并启用单击它在浏览器中打开.检测URL很容易,我只使用以下代码,来自 http:///www.scalabium.com/faq.com/faq/dct0146.htm mask := SendMessage(MNote.Handle, EM_GETEVENTMASK, 0, 0); SendMessage(MNote.Handle, EM_SETEVENTMASK, 0, mask or ENM_LINK); SendMessage(MNote.Handle, EM_AUTOURLDETECT, Integer(True), 0); 但是第二部分对我不起作用.他们提供以下代码以捕获EN_LINK消息并处理: type TForm1 = class(TForm) protected procedure WndProc(var Message: TMessage); override; end;
4 2023-11-09
编程技术问答社区
从数据库加载RTF文本到TRichEdit中
我目前正在从Delphi 7到2010年迁移我们的软件解决方案.大多数变化很简单,只剩下少量的障碍. 在表单上,​​我们使用的是显示从MSSQL DB中blob字段抓取的RTF文本的Trichedit.这就是它在Delphi 7: 中的工作方式 //Get RTF text from Blob field using TADOQuery rtfStream := sql.CreateBlobStream(sql.FieldByName('rtftext'), BmRead) as TMemoryStream; //Load into TRichEdit RichEdit.PlainText := False; RichEdit.Lines.LoadFromStream(rtfStream); 这将显示Trichedit组件中预期的RTF,但是Delphi 2010中的相同代码将RTF显示为纯文本,每个字符之间的标签.我认为这与从ANSI到Unicode的更改有很大关系,但
14 2023-11-06
编程技术问答社区
RichEdit中的Unicode RTF文本
我很难获得RichEdit控件以显示Unicode RTF文本.我的应用程序是Unicode,因此所有字符串都是WCHAR_T字符串. 如果将控件创建为" Richedit20a",则可以使用例如setWindowText和文本以适当的格式显示.如果我将控件创建为" Richedit20W",则使用setWindowText逐字显示文本,即显示所有RTF代码.如果我使用em_setTextex参数,则会发生同样的情况,指定MSDN告诉我的CodePage 1200,用于指示Unicode. 我已经尝试使用Streamin函数,但是只有在ASCII文本中流式传输时,这似乎才起作用.如果我在WideChars中流式传输,则在控件中获得空文字.我使用sf_rtf | sf_unicode标志,MSDN暗示可能不允许使用此组合. 那么该怎么办?有什么方法可以将WideChars纳入RTF解释而不丢失RTF,还是我需要对其进行编码?我考虑过尝试UTF-8,或者可能使用RTF中的编码设施,
6 2023-11-06
编程技术问答社区
HTML Javascript富文本框(IDE)
我希望在JavaScript中构建一个IDE,其行为与Gmail的行为非常类似,除非样式将根据其键入时自动更改.这不是我在挣扎的逻辑. Gmail如何在HTML中以丰富的编辑格式编辑能力.据我所知,Textarea控件不起作用,那么它们如何伪造此功能? 解决方案 Google用于"内容可编辑" 尝试直接在Firefox End编辑HTML页面中按F7 :) Gmail在页面内使用符合性=" true". 的框架 另请参见Google Web Toolkit: 其他解决方案 我不太确定这是否是您的意思,但是您正在寻找在线Wysiwyg编辑器吗? 在这种情况下,请允许我推荐您可以在相应的您可能必须自定义任何编辑器才能编辑电子邮件(例如,您将无法使用任何预定义的CSS类,因此编辑器必须执行所有样式直接在标签中定义),但这不是问题. 其他解决方案 下载允许这样做的众多开源系统之一,看看他们是如何做到的. 基本上,他们将事件处理程序附加到按钮上,而该按钮又知道如何在
12 2023-10-23
编程技术问答社区
RichEdit不尊重有粘贴内容的普通文本
我创建了一个新应用程序,放在trichedit上,然后将明文属性设置为true.然后,我运行应用程序并将一些富有格式的文本粘贴到Richedit中. 我希望它显示为纯文本,但是它以格式显示内容. 任何人都知道如何像纯文本一样使用trichedit(而不是使用备忘录:) ) 解决方案 您需要手动执行粘贴,以确保忽略格式. if Clipboard.HasFormat(CF_TEXT) then RichEdit.SelText := Clipboard.AsText; 从WM_PASTE 的消息处理程序中运行此代码. 我目前不知道如何拦截 ctrl+v 键盘并用此代码替换它. WM_PASTE消息未发送到富的编辑控件. 正如科迪在评论中所建议的那样,一个解决方案如下: 确保编辑控件中的所有文本都被标记为保护. 子类TRichEdit和Override CNNotify. 处理EN_PROTECTED消息,如果msg=WM_PAST
6 2023-10-18
编程技术问答社区
Richedit风格的格式自行改变
(如果您可以更好地理解并更好地定义我的问题,请有人编辑标题.) 我遇到的问题是富裕的"恢复"回到默认的" nothing" aka [],然后返回到我设置为bold或Italic的任何内容. 有错的东西 - 我认为,由于我不知道它是如何破坏事物的 - 是一个程序(retuslinescheck),它检查了Richedit中的线量,并删除第一个直到达到某个点(一次最多显示14行)这样: while REMain.Lines.Count > 14 do REMain.Lines.Delete(0); 我在其他过程中添加了上述过程的6个出现,这些过程添加了富人的行,但它们都没有更改RichEdit.SelAttributes.Style,而是一个,它仅添加了一条大胆的行: REMain.SelAttributes.Style := [fsBold]; REMain.Lines.Add('something'); REMainLinesCheck; 所以我已
8 2023-10-04
编程技术问答社区