如何在EDITBOX控件中使用背景位图,如何在EDITBOX控件中使用背景位图
【 tulaoshi.com - C语言心得技巧 】
如何在EDITBOX控件中使用背景位图
作者:zhoudb
public:CBitmap m_bmp;protected:CBrush m_brHollow;CBitmap *m_pbmCurrent;第二步 重载部分函数:
afx_msg HBRUSH CtlColor(CDC* pDC, UINT nCtlColor);afx_msg void OnLButtonUp(UINT nFlags, CPoint point);afx_msg void OnChange();afx_msg BOOL OnEraseBkgnd(CDC* pDC);各个函数的具体作用:
void CMyEditCtrl::OnChange() {Invalidate(); ///强制进行更新}2.2 OnLButtonUp();
void CMyEditCtrl::OnLButtonUp(UINT nFlags, CPoint point) {Invalidate(); ///强制进行更新CEdit::OnLButtonUp(nFlags, point);}2.3 CtlColor(CDC* pDC, UINT nCtlColor)
HBRUSH CMyEditCtrl::CtlColor(CDC* pDC, UINT nCtlColor) {pDC->SetBkMode(TRANSPARENT); ///选择透明背景模式pDC->SetTextColor(RGB(0xff,0xff,0xff)); ///设置文字颜色为白色return m_brHollow;}2.4 OnEraseBkgnd(CDC* pDC)
BOOL CMyEditCtrl::OnEraseBkgnd(CDC* pDC) {BITMAP bm;m_bmp.GetBitmap(&bm);m_pbmCurrent = &m_bmp;CDC dcMem;dcMem.CreateCompatibleDC(pDC);CBitmap* pOldBitmap = dcMem.SelectObject(m_pbmCurrent); ///选择位图pDC->BitBlt(0,0,bm.bmWidth,bm.bmHeight,&dcMem,0,0,SRCCOPY); ///画出位图dcMem.SelectObject(pOldBitmap); return TRUE; }说明:其中代码有些部分简化了,有些部分还可以优化。对于底图的选择,在这里我选择是与我EDITBOX一样大小的底图,如果两者不一样大小,需要修改部分OnEraseBkgnd(CDC* pDC)代码。
来源:http://www.tulaoshi.com/n/20160129/1484384.html
看过《如何在EDITBOX控件中使用背景位图》的人还看了以下文章 更多>>