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

来源:互联网 发布:macbookpro软件大全 编辑:程序博客网 时间:2024/05/19 09:42

1.BmpEdit.h

class CBmpEdit : public CEdit//以CEdit为基类派生{public:CBmpEdit();CBitmap m_Bitmap;//声明CBitmap类对象m_Bitmappublic:virtual ~CBmpEdit();// Generated message map functionsprotected: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 handlersHBRUSH 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();//背景重绘}

0 0
原创粉丝点击