MFC中用CRichEditCtrl复制快捷方式操作

Posted

技术标签:

【中文标题】MFC中用CRichEditCtrl复制快捷方式操作【英文标题】:Copy shortcut operation with CRichEditCtrl in MFC 【发布时间】:2015-02-17 09:03:24 【问题描述】:

我对 MFC 很陌生。我有以下代码用于CopySelectAll CRichEditCtrl 对象的快捷方式。

ON_COMMAND(ID_EDIT_COPY, OnCopy)
ON_COMMAND(ID_EDIT_SELECT_ALL, OnSelectAll)

但我无法在我在这里编写的函数中捕获 Copy (Ctrl+C) 和 SelectAll (Ctrl+A) 的断点,因为它没有被执行。

这里的 CRichEditCtrl 对象是只读的(文本是只读的,不允许修改)。

我还想为 CRichEditCtrl 对象提供使用鼠标进行文本选择的功能。

关于如何实现这一点的任何想法?

【问题讨论】:

【参考方案1】:

此操作不是使用我们知道的 WM_COMMAND 值执行的。击键也会在内部进行检查并在内部进行处理。

对于与剪贴板交互的某些操作,内部有名为 WM_COPY 和 WM_PASTE 的特殊窗口消息。

Afaik 选择(全选)完全在内部完成。您可以尝试子类化 RTF 控件并拦截 EM_SETSEL 消息。

如果你想拦截击键,你可以使用 PreTranslateMessage 或者你可以再次子类化 RTF 控件。

【讨论】:

知道如何用鼠标为这个只读的 CRichEditCtrl 对象进行文本选择吗? 您是否将其设置为只读,或者您是否使用了 EnaleWindow?在我的 RTF 控件中,我可以使用鼠标选择文本。 (EM_SETREADONLY) 它是只读的。有什么方法可以在 PreTranslateMessage() 中使用 EM_GETSEL 从 CRichEditCtrl 对象中获取选定的文本。 AFAIK 是的。你有什么问题? 我想借助我们在其他编辑器中看到的鼠标来选择文本。

以上是关于MFC中用CRichEditCtrl复制快捷方式操作的主要内容,如果未能解决你的问题,请参考以下文章

MFC CRichEditCtrl中插入gif图片的问题。。。

CRichEditCtrl 如何忽略按键?

如何在MFC中用鼠标画直线

MFC读写文件

C++ MFC SDI 复制/粘贴不起作用

如何在CRichEditCtrl控件中直接读如RTF格式的文件(这个是通过流的方式来读取文件)