自定义编辑框控件-位图背景编辑框

1.BmpEdit.h

class CBmpEdit : public CEdit//以CEdit为基类派生
{

public:
	CBmpEdit();
	CBitmap m_Bitmap;//声明CBitmap类对象m_Bitmap

public:
	virtual ~CBmpEdit();

	// Generated message map functions
protected:
	
	afx_msg HBRUSH CtlColor(CDC* pDC, UINT nCtlColor);
	afx_msg BOOL OnEraseBkgnd(CDC* pDC);
	afx_msg void OnChange();


	DECLARE_MESSAGE_MAP()
};


2.BmpEdit.cpp

#include "stdafx.h"
//#include "BmpBKEdit.h" //IDB_BITMAP1
#include "BmpEdit.h"
#include "resource.h"

CBmpEdit::CBmpEdit()
{
	m_Bitmap.LoadBitmap(IDB_BITMAP1);//构造函数中加载位图资源
}

CBmpEdit::~CBmpEdit()
{
}


BEGIN_MESSAGE_MAP(CBmpEdit, CEdit)

	ON_WM_CTLCOLOR_REFLECT()
	ON_WM_ERASEBKGND()
	ON_CONTROL_REFLECT(EN_CHANGE, OnChange)
	
END_MESSAGE_MAP()

/
// CBmpEdit message handlers

HBRUSH CBmpEdit::CtlColor(CDC* pDC, UINT nCtlColor) //处理CBmpEdit类的WM_CTLCOLOR消息
{

	pDC->SetBkMode(TRANSPARENT);//设置文本背景透明

//	return TRUE;

	return NULL;
}

BOOL CBmpEdit::OnEraseBkgnd(CDC* pDC)//处理CBmpEdit类的WM_ERASEBKGND消息
{
	CDC memDC;//设备上下文
	memDC.CreateCompatibleDC(pDC);//创建内存设备上下文
	memDC.SelectObject(&m_Bitmap);//将位图选入设备上下文
	BITMAP m_Bmp;//声明BITMAP对象
	m_Bitmap.GetBitmap(&m_Bmp);//获取位图信息
	int x = m_Bmp.bmWidth;//获取位图的宽度
	int y = m_Bmp.bmHeight;//获取位图的高度
	CRect rect;//声明区域对象
	GetClientRect(rect);//获取编辑框客户区
	pDC->StretchBlt(0, 0, rect.Width(), rect.Height(), &memDC, 0, 0, x, y, SRCCOPY);//绘制位图背景
	memDC.DeleteDC();//释放内存设备上下文
		return TRUE;
	//return CEdit::OnEraseBkgnd(pDC);
}

void CBmpEdit::OnChange() //处理CBmpEdit类的EN_CHANGE消息
{
	
	Invalidate();//背景重绘
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值