Loading

mfc输入栏禁用复制粘贴

MFC自带的CEdit输入栏并没有限制拷贝粘贴功能,在一些特殊情况下并不方便使用。比如一般为了安全起见,密码输入栏禁止粘贴密码。这时候就需要我们自定义一个输入栏,微软提供了WM_PASTE消息,因此只需要我们监听这个消息并做处理即可。下面给一个小的demo:

CPasswordEdit.h

#pragma once
#include <afxwin.h>
class CPasswordEdit : public CEdit
{
public:
    CPasswordEdit();
    ~CPasswordEdit();
protected:
    afx_msg LRESULT OnPaste(WPARAM wParam, LPARAM lParam);
    DECLARE_MESSAGE_MAP()

public:
    void SetEnablePaste(BOOL bEnablePaste);
private:
	BOOL m_bEnablePaste;
};

CPasswordEdit.cpp

#include "CPasswordEdit.h"

CPasswordEdit::CPasswordEdit() {
	m_bEnablePaste = TRUE;
}

CPasswordEdit::~CPasswordEdit() {

}

BEGIN_MESSAGE_MAP(CPasswordEdit, CEdit)
	ON_MESSAGE(WM_PASTE, OnPaste)
END_MESSAGE_MAP()

LRESULT CPasswordEdit::OnPaste(WPARAM wParam, LPARAM lParam) {
	if(m_bEnablePaste == TRUE)
	{
		return CEdit::DefWindowProc(WM_PASTE, wParam, lParam); 
	}
	return S_OK;
}

void CPasswordEdit::SetEnablePaste(BOOL bEnablePaste) {
    m_bEnablePaste = bEnablePaste;
}

调用SetEnablePaste(FALSE)即可禁止粘贴内容到输入框。

posted @ 2022-09-08 23:26  柴承训  阅读(225)  评论(0)    收藏  举报