自定義編輯框控制元件-點陣圖背景編輯框
阿新 • • 發佈:2019-01-08
#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();//背景重繪 }