如何防止用户在之外的文本以外的任何东西。rel=“nofollow”> win32富编辑控制?

(即,它们不应该能够更改任何文本的格式,添加图形等;如果它们复制 - 粘贴新文本,只应保留文本,并且应丢弃相关的格式。)

有帮助吗?

解决方案

我从来没有找到一种特别优雅的方式来处理这个:我过去的工作是:

1)捕获控制的WM_KEYDOWN消息,并丢弃所有格式键(Ctrl + e,j,r,l,1,2,5,+和ctrl + shift + a,7)

2)通过使用id_edit_paste的id捕获wm_command消息来捕获所有粘贴操作,并用em_pasteSpecial,cf_unicodeText替换粘贴消息到控件。(这与MFC:取决于您使用的框架或语言,这可能需要捕捉Ctrl + V和类似而不是ID_EDIT_PASTE。)

不漂亮,我合作,但似乎工作。

其他提示

这个答案可能有点迟到,但对于任何其他人来寻找这个问题的答案,我发现的最佳方式可以在丰富的编辑控制中完全控制粘贴操作是提供 IRichEditOleCallback::QueryAcceptData 然后返回s_false到通过更改LPCFFORMAT参数,将它们全部全部停止或过滤出某些剪辑板格式。

MFC中的CricheditView :: QueryAcceptData函数提供了如何完成的优秀示例。这将适用于各种粘贴操作,包括拖放,因此可以完全控制发生的事情的最佳方式。

甚至以后:)

SendMessage(wndEdit, EM_SETEDITSTYLE, SES_EMULATESYSEDIT, SES_EMULATESYSEDIT)
.

似乎做了诀窍:粘贴纯文本,并禁用格式的热键。

ses_emulatesysedit :当该位打开时,丰富的编辑尝试效仿系统编辑控件(默认值:0)。

您仍然保留了RicheDit的一些“奖金”功能,例如滚动条按需。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top