它有像CRichEditCtrl::Copy()
,CRichEditCtrl::Paste()
这样的方法,你可以调用,但我不能发现任何控制信息被Windows发送给执行粘贴操作。有谁知道这样的事情是否存在?还是CRichEditCtrl
做一些较低层次的监控WM_CHAR事件?如果是这样,我可以重用任何内部方法,或者我只需要自己滚动以覆盖标准粘贴功能?CRichEditCtrl如何知道粘贴操作已执行?
我实际上想要的是我的自定义子类(CMyRichEditCtrl : CRichEditCtrl
)忽略粘贴到控件的任何格式。通过获取不同剪贴板格式的剪贴板数据,或者通过正常粘贴剪贴板数据并立即删除插入文本的格式。
我试过到目前为止:
- 检查WM_PASTE消息中
CMyRichEditCtrl::PreTranslateMessage()
- 创建方法
virtual void CMyRichEditCtrl::Paste()
- 在afxcmn.inl
- 把一个断点
CRichEditCtrl::Paste()
倾销每消息通过CMyRichEditCtrl::PreTranslateMessage()
结果:
1:没有见过WM_PASTE消息
2:这是从来没有所谓的
3:这是从来没有打...... 怎么样?
4:控件从不收到任何WM_COMMAND,WM_PASTE或焦点相关的消息。基本上只有鼠标移动和按键消息。
看来其他人已经成功地做到了这一点。我想知道如果我的MFC版本或什么东西可能会搞砸了,在这一点上。
你能解释为什么SetDefaultCharFormat使它工作(它)? 我说它的工作,但这种做法只有_te lls_我的操作发生了,它不会让我重写它。我仍然会给你赏金,如果没有更好的建议,因为即使你回答的部分是非常有帮助的。 – 2010-02-15 15:41:22
或者当然,如果_you_能够告诉我OnProtected方法如何防止/修改发生在受保护的字符上的动作。 – 2010-02-15 15:45:33
是的,我也发现了!但你当然应该得到它,我一直在用不同的方式问同样的问题,一个星期没有成功! – 2010-02-15 15:53:11