问题标签 [cricheditctrl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
64 浏览

regex - CRichEditCtrl - 正则表达式

如何在 RichEditCtrl 中使用 RegEx 搜索。


我遇到的问题是突出显示匹配正则表达式列表的文本的第一个实例(正则表达式可以重复,在这种情况下,第一个正则表达式匹配第一个实例,第二个匹配第二个,依此类推)。

由于 FindText 不支持正则表达式,我试图获取以索引 0 开头的所有文本,匹配第一个正则表达式,找到匹配项,然后在匹配的文本上发出 FindText,突出显示匹配的索引,从匹配端重复搜索索引和下一个正则表达式。

0 投票
2 回答
563 浏览

c++ - MFC Rich Edit Control 2.0 接收点击事件

我希望有人能帮助我解决我遇到的困境。本质上,我有一个 Checkbox 和一个 RichEditControl 并排。我希望能够知道用户何时单击了我的 RichEditControl,这样我就可以向我的复选框发送一条消息以将其标记为打开和关闭。

起初我试图用空文本覆盖我的复选框,以充当我的 RichEditControl 的“空白”背景,这样我就不必担心左右发送消息。无论我尝试什么,“空白”背景都会与 RichEditControl 文本重叠并使其完全空白。

我在这里搜索了一些帮助,我发现正是我遇到的。我明白他在说什么,但不具备实施他们所说的话的知识。

现在我正在使用 EN_LINK 来尝试捕获一条消息,这样我就可以告诉我的复选框来标记自己。

如果这完全是错误的方法,我很抱歉。我已经在谷歌上搜索了几个小时,却空手而归。如果有人有任何其他方法,请尽可能帮助我。如果我上面的内容还不够,我可以发布更多代码。

0 投票
0 回答
660 浏览

c++ - CRichEditCtrl (2.0) 中的超链接

我正在尝试将可点击的超链接插入到CRichEditCtrl.

在互联网上搜索了几个小时后,我真的很困惑,因为人们提出了许多不同的解决方案,但最终似乎都没有奏效。

如果我是对的,超链接的 RTF 语法如下所示:

我试图将它插入到我的 Rich Edit 中,但它不起作用。

0 投票
2 回答
741 浏览

c++ - 在单字符行上调用时由 CRichEditCtrl::GetLine() 添加的虚假“\r”?

我尝试CRichEditCtrl::GetLine()在使用 VS2015 以 Unicode 模式构建并在 Windows 10 上运行的 MFC 应用程序中检索富编辑控件的给定行的文本。

我写了这个辅助函数:

这段代码工作正常,除了只包含一个字符的行。在这种情况下,CRichEditCtrl::GetLine()返回2(而不是预期的 1),并且输出缓冲区包含正确的字符,后跟一个\r.

这是为什么?为什么\r只为单字符行添加而不为包含更多字符的行添加?

我能够解决这个问题,添加一个if像这样的特殊情况:

但是,我不清楚这种特殊情况行为的原因。


PS:调用的CRichEditCtrl::GetLine()MFC代码是:

所以这似乎只是EM_GETLINE消息的一个小包装。

MSDN doc forEM_GETLINE声明“返回值是TCHAR复制的 s 数”(在我的例子中是wchar_ts)。对于一个字符的行,返回值是,而不是预期的一。\r因此,在这种特殊情况下,听起来富编辑控件实际上是在返回单个字符后跟一个虚假字符。

对于包含多个字符的行,返回值是实际的字符数,正如预期的那样(我尝试使用简单的英文/ASCII 字符,以避免 Unicode 代理对和其他东西的复杂性)。

0 投票
1 回答
215 浏览

c++ - 为什么 CRichEditControl 隐藏单词周围的边框

我正在使用CRichEditCtrl (RichEdit20A) 来显示 rtf-text:

问题是控件不会在 rtf-text 中的单词周围显示边框,如下所示:

我也尝试了 RichEdit5.0 在这里提出的方式,但结果是一样的,不显示边框。但是,如果我将文本保存在 .rtf 文件中并在 MSWord 或 Libre/OpenOffice 编辑器中打开它,则文本周围的虚线边框会正确显示:

在此处输入图像描述

为什么 CRichEditControl 在我的情况下隐藏边框?请帮忙,我会很感激任何建议。

0 投票
1 回答
898 浏览

c++ - 如何在MFC中使用richedit控件_RICHEDIT_VER over 2.1

我想在 MFC 中使用富编辑控件的下划线颜色

但是,在 afxwin.h 中,_RICHEDIT_VER 定义了 0x210。像这样,

我正在加载“msftedit.dll”(8.1 版本)和 Windows10 SDK(10.0.16299.0)但是,bUnderlineColor 是在 Richedit.h 中编码的

如果我不使用包装类(CRichEditCtrl),我可以在 MFC 项目中使用它吗?如何?

0 投票
1 回答
157 浏览

c++ - CRichEditCtrl won't let edits put it above 160560 bytes?

At about 1600 lines, about 100 chars per line, typing more neither shows up in the buffer nor calls the

callback.

If I paste into the buffer, only enough characters to come up to this limit are being pasted. For instance if there is room for 10 characters, and you paste a 30-character phrase, only 10 characters are actually inserted.

Both cases occur whether the added characters are at the end or not.

This happens to be a 64-bit Visual Studio C++ 2017 app running on Windows 10 Pro.

0 投票
1 回答
333 浏览

mfc - Msftedit 似乎在文件末尾处理段落标记 (\par) 不一致

我已经实现了使用cricheditctrl来连接 rtf 文本,但\par在文件末尾遇到了问题。写字板使用相同的生成器并执行相同的操作。(Msftedit 5.41.21.2510)。

如果我,其中 wtrf 是一个 cricheditctrl:

结果 rtf 是:

最后两个\par

从更大的角度来看,我正在用 rtf 内容做我自己的事情。如果我最后不使用双曲作曲\par,请执行以下操作:

我不会在两个条目之间得到段落分隔符。他们会互相对接。如果我输入一个简单的字板:

用一个换行符,我得到:

所以,至少,这在我的机器上总是一致的。但我在Word 2007: Rich Text Format (RTF) Specification, version 1.9.1中找不到有关它的内容。

我担心这不是恒定的行为,我可能会在其他机器上得到不同的结果。然后,也许我错过了一些关于如何正确结束 RTF 文档的内容。我确实搜索了这个。谢谢。

更新:我很抱歉这张图片,但我认为它有帮助。它只会变得更加混乱。

在此处输入图像描述 所以我从数据库中提取内容,你可以看到内容是:

并进入顶部窗口,您可以看到段落标记正在工作,只有一个。

test.txt 有:

现在有两个\par。在我放置数据的第二个 RTF 窗口中:

我最后有两段!(第二个 rtf 窗口)

所以,以防万一,这是我使用了 20 年的回调:

UPDATE2:现在我不得不相信这是控制中的一个缺陷。我看到了它,但它并没有在我的脑海中记录下来。所以有了这个:

文件中的结果是:

是将wrtf.SetSel(-1, -1);插入点放在最后一个\par之前,而不是在它之后。线索是最后一个 par 有一个\cf1从第一个插入开始的颜色标签。在这种情况下,它正在放弃我的一个\parwhere 在前一种情况下它不是,所以看起来我得到了额外的\par。它快把我逼疯了!:)

0 投票
1 回答
366 浏览

mfc - MFC:如何在 CTabView 选项卡中实现 CRichEditView 的上下文菜单?

我有一个CTabView带有一个标签的 a CRichEditView。富文本添加到控件并显示正常。如果我在工具栏编辑项目中选择文本CRichEditView工作正常(例如,复制高亮,如果我点击它,它会复制到剪贴板)。但是,我发现如果我选择文本并右键单击,则没有上下文菜单CRichEditViewCEditView. 在网上搜索,我找到了一个CRichEditView::GetContextMenu()尝试和使用的实现。它首先出现断言失败,因为CDocument它不是富文本类型,因此为了测试,我将其删除(在下面注释掉)并最终得到以下结果:

在哪里IDR_CONTEXT_EDIT_MENU

现在,当我右键单击时,我会看到上下文菜单。但是,当我选择“复制”时,什么也没有发生。所以我映射了,ID_EDIT_COPY所以我可以设置一个断点来查看它是否被调用。

不是使用上下文项,而是使用工具栏。

我错过了什么,做错了什么?

蒂亚!!

0 投票
2 回答
130 浏览

c++ - 我的 MDI 中的拖放被 CRichEditView 拦截并在 CRichEditView::GetDocument 中崩溃 - 我如何覆盖它?

我在 MFC 中编写了一个 MDI 应用程序,其中一个文档窗口包含一个 CRichEditView 等等。当我将文件拖到文档窗口中时,到 CRichEditView 上,它在此处崩溃(来自afxrich.inl):

发生崩溃是因为 m_pDocument 不是 CRichEditDoc(它是我的一个由 CDocument 派生的类)。

但是,我不关心 RichEditView/Ctrl,我想要的是当我将文件拖放到应用程序中时,它只是作为文档打开。如果我的 MDI 应用程序是空的,这已经发生:我将文件拖放到应用程序中并打开它。如果我在文档窗口已经打开时尝试相同的拖放操作,它会如上所述崩溃而不是打开它。我尝试了多种解决方案来覆盖此行为,但没有一个有效:

  • 从(我的扩展)CRichEditView 拦截 OnDragEnter
  • 使用 ON_NOTIFY_REFLECT(EN_DROPFILES, OnEnDropFiles)
  • 从 CRichEditView 在 CRichEditCtrl 上调用 DragAcceptFiles(false)
  • 在 CRichEditCtrl 和 CRichEditView 句柄上调用 RevokeDragDrop()
  • 从 CMainFrame/CMDIFrameWndEx 调用 DragAcceptFiles(true)

这些都不能阻止 RichEdit 进行放置操作(和崩溃),它们似乎根本没有效果。我想要的只是让 CRichEditView/CRichEditCtrl 不拦截删除的文件,而是让它从 CMainFrame/CMDIFrameWndEx 拦截。

有谁知道如何解决这个问题?