问题标签 [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 投票
2 回答
706 浏览

mfc - 如何动态更改 CRichEidt 对象的样式?

现在我创建了一个 CRichEdit 对象,它处于单行模式,如果我想将其更改为多行样式,我想做所有这些以响应 ctrl 消息,例如有人按下一个按钮。谢谢

0 投票
0 回答
974 浏览

mfc - CDialog DoModal(对话框以键盘焦点打开,但不是鼠标焦点)

我有一个包含 CRichEditCtrl 控件的 CDialog 窗口 (CDrafter)。

我重写了 CDrafter::PreTranslateMessage 和 CDrafter::OnNotify 以允许我用鼠标单击 RichTextEdit 中的特殊单词,这又打开另一个对话框 (MyDialog)。

*注意:我这样做是因为我不喜欢 EN_LINK 样式的限制。*

所以在 CDrafter::PreTranslateMessage 我有:

它只是确定单击的位置和单词(仅此而已)(等待 OnNotify 对其进行处理)。

所以在 CDrafter::OnNotify 我有:

我已经尝试在 MyDialog::DoModal 之后调用“CDialog::OnNotify(wParam, lParam, pResult)” - 仍然看到同样的问题。MyDialog::DoModal 在与父对话框相同的线程中被调用。

我希望能够做到以下几点:

单击单词,MyDialog 打开,单击 MyDialog::Cancel 按钮,对话框关闭。

但是有一个问题,因为这是我的序列:

单击单词,打开 MyDialog,单击 MyDialog::Cancel 按钮(不起作用 - 仅更改鼠标图标),单击 MyDialog::Cancel 按钮,对话框关闭

我需要(最初单击)鼠标才能在新打开的对话框中获得任何鼠标控制。即按钮等上的鼠标悬停事件在我(单击)之前什么都不做。

0 投票
2 回答
1602 浏览

c++ - CRichEditCtrl::StreamIn 丢失格式

我正在创建一个CRichEditCtrl控件并尝试将一些 RTF 加载到其中。文本似乎加载得很好,但它丢失了所有格式,基本上变成了纯文本。

我认为一些示例代码应该足以说明问题:

您可以在下面的屏幕截图中看到一个示例:

在此处输入图像描述

正如你所看到的,它的文本 OK,但单词“example”应该是粗体的。我尝试了很多不同的 RTF,甚至使用写字板保存的内容并直接使用它,但它仍然只将文本显示为纯文本并且所有格式都丢失了。任何函数调用也不会返回任何错误。

0 投票
1 回答
1681 浏览

visual-c++ - 是什么导致 ::AfxInitRichEdit2 失败,我该如何解决?

我正在使用 Visual Studio 2012 构建现有的 MFC 应用程序。该应用程序使用"RichEdit20A"控件和自定义控件,它们继承了CRichEditCtrl.

应用期间InitInstance()调用::AfxInitRichEdit2(),调用AtlLoadSystemLibraryUsingFullPath(L"RICHED20.DLL"),调用LoadLibraryExW(pszLibrary, NULL, LOAD_LIBRARY_SEARCH_SYSTEM32)。后一个调用失败并返回NULLGetLastError()返回 87(参数不正确)。这发生在 Win7 x64 和 Win8 x64 上。

失败的调用似乎是在 Visual Studio 2012 运行时中引入的(它在 conditional 内#if NTDDI_VERSION >= NTDDI_WIN8)。该应用程序在使用 Visual Studio 2008 构建时运行良好。

有谁知道为什么会发生这种情况以及如何解决(或解决)这个问题?或者,有没有办法“恢复”运行时以使用旧的加载行为?

0 投票
3 回答
5612 浏览

c++ - CRichEditCtrl 附加彩色文本?

我在 MFC 项目中有一个 CRichEditCtrl,我将其用作报告日志。根据给定的情况,我需要将不同颜色的文本附加到控件(即标准通知的蓝线,错误的红线等)。我已经非常接近让它工作了,但它仍然表现得很奇怪:

充其量,最终结果是新附加的行被适当地着色,但所有先前的文本都变成黑色。最重要的是,对于每个附加的文本行,起始选择似乎增加了 1。例如:

那么我该如何解决这个问题,让所有以前的文本和格式保持原样,同时附加一行新的彩色文本呢?

0 投票
1 回答
593 浏览

winapi - CRichEditCtrl::LimitText - 换行问题

我有一个大小为 500 的 DB 文本字段,使用CRichEditCtrl. 我打电话给CRichEditCtrl::LimitText(500)你,所以你不能输入比数据库可以处理的更多的文本,这工作得很好,直到你输入换行符。每个换行符将字符串的长度增加 2,但在 500 限制中仅计为 1...例如,如果我将编辑控件填充到限制并有 4 个换行符,CString则长度为 504。

我特别希望控件只允许用户输入最多 500 个字符的文本,而不是截断他们输入的内容。我怎样才能最好地做到这一点?请注意,我需要按原样保存内容,而不是在数据库中CString替换或类似的内容。\r\n\n

0 投票
0 回答
624 浏览

c++ - CRichEditCtrl::StreamIn 不读取整个文本文件

我有一个要阅读的文本文件,然后将其放入富编辑框中。问题是,pbBuff缓冲区获取整个文件,但只有第一行添加到 CRichEditCtrl 小部件。

这是回调函数:

以及我如何在OnInitDialog()函数中设置它:

0 投票
2 回答
689 浏览

mfc - 如何在具有透明背景的 CDC 上渲染 CRichEditCtrl?(MFC)

我需要帮助以在屏幕上显示和打印的图形上下文上呈现具有透明背景的 CRichEditCtrl 内容。现在我有以下代码,除了透明度问题外,它运行良好:

我需要以透明方式渲染此文本,因为我的 DC 上已经绘制了一些东西。我试图在网上搜索有关元文件和透明度的任何帮助,但没有找到足够的帮助。我会感谢任何形式的帮助。

0 投票
3 回答
1656 浏览

c++ - CRichEditCtrl 防止在 SetSel 上自动滚动

我有一个从 CRichEditCtrl 派生的 CMyRichEditCtrl。当我调用 SetSel 时,它会自动滚动 CRichEditCtrl 的内容,以便插入符号可见。我想避免这种行为。

让我烦恼的是,这种行为似乎在 6.0 和其他版本之间发生了变化。

Visual Studio 2010: http: //msdn.microsoft.com/en-us/library/4zek9k1f (v=vs.100).aspx

插入符号放置在由开始(cpMin 或 nStartChar)和结束(cpMax 或 nEndChar)索引中的较大者指示的选择的末尾。此函数滚动CRichEditCtrl 的内容,以便插入符号可见。

Visual Studio 6.0: http: //msdn.microsoft.com/en-us/library/aa313352 (v=vs.60).aspx

插入符号放置在由开始(cpMin 或 nStartChar)和结束(cpMax 或 nEndChar)索引中的较大者指示的选择的末尾。此函数不会滚动CRichEditCtrl 的内容以使插入符号可见。

有没有办法在调用 SetSel 时防止控件自动滚动?

0 投票
2 回答
2132 浏览

c++ - CRichEditCtrl 获得焦点时选择所有文本

我有一个带有菜单和 CTabCtrl 的对话框。CTabCtrl 有一个选项卡,其中包含一个 CDialog。反过来,它包含一些静态文本和一个 CRichEditCtrl。窗口获得和失去焦点没有特别的问题。

我此后添加了第二个相同的选项卡,现在每次更改选项卡时,CRichEditCtrl 中的所有文本都显然被选中。它以反转的配色方案显示,如果您按下一个键,所有文本都会被替换。

ECO_NOHIDESEL 标志的描述说(强调我的):

否定编辑控件的默认行为。默认行为在控件失去输入焦点时隐藏选择,并在控件接收到输入焦点时显示选择。如果指定 ECO_NOHIDESEL,则所选文本会反转,即使控件没有焦点也是如此。

“显示选择”对我来说听起来像是“显示该控件最后一次获得焦点时的选择”,这不是正在发生的事情。通常在失去焦点之前没有选择任何内容,但如果我确实尝试留下选择,返回另一个选项卡并返回,则像往常一样选择整个文本。

可以防止这种选择吗?

void EditorDialog::OnTabSelChange(NMHDR * phdr, LRESULT* pResult) {