如何屏蔽CEdit控件中复制功能的另类方法

最近一个项目需要将CEdit控件的复制功能屏蔽掉,思来想去用了一个比较另类的方法解决了此问题。
基本思想:1 将CEdit控件的右键消息处处理掉,防止通过右键菜单中的复制选项,但是还可以利用快捷键ctrl+c复制
                    2 将CEdit控件中的鼠标移动消息处理掉,防止用鼠标选中文本
                    3 将CEdit控件的鼠标双击消息处理掉,防止利用双击选中文本
实现这几个功能CEdit控件的复制功能就无法实现了

实现步骤:
1. 从CEdit类派生出自己的类CMyEdit类
class CMyEdit : public CEdit
{
// Construction
public:
 CMyEdit();

// Attributes
public:

// Operations
public:

// Overrides
 // ClassWizard generated virtual function overrides
 //{{AFX_VIRTUAL(CMyEdit)
 //}}AFX_VIRTUAL

// Implementation
public:
 virtual ~CMyEdit();

 // Generated message map functions
protected:
 //{{AFX_MSG(CMyEdit)
 afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
 afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
 afx_msg void OnMouseMove(UINT nFlags, CPoint point);
 //}}AFX_MSG

 DECLARE_MESSAGE_MAP()
};
2.重载鼠标右键消息函数
void CMyEdit::OnRButtonDown(UINT nFlags, CPoint point)
{
 // TODO: Add your message handler code here and/or call default
 
 //CEdit::OnRButtonDown(nFlags, point);将原有的CEdit右键函数屏蔽掉,是他失去功能
}
3.重载鼠标移动消息函数
void CMyEdit::OnMouseMove(UINT nFlags, CPoint point)
{
 // TODO: Add your message handler code here and/or call default
 
 //CEdit::OnMouseMove(nFlags, point);
}
4.重载鼠标双击消息函数
void CMyEdit::OnLButtonDblClk(UINT nFlags, CPoint point)
{
 // TODO: Add your message handler code here and/or call default
 
 //CEdit::OnLButtonDblClk(nFlags, point);
}
5.将CMyEdit类实例化
    

posted on 2005-01-19 16:23  lazyman  阅读(2623)  评论(4编辑  收藏  举报

导航