WEB开发网
开发学院软件开发VC 如何在EDITBOX控件中使用背景位图 阅读

如何在EDITBOX控件中使用背景位图

 2010-06-27 20:41:53 来源:WEB开发网   
核心提示:2.3 CtlColor(CDC* pDC, UINT nCtlColor)一般的文字的默认背底是白色的,这儿选择了透明的形式,如何在EDITBOX控件中使用背景位图(2),所以底图可以显示,HBRUSH CMyEditCtrl::CtlColor(CDC* pDC, UINT nCtlColor){pDC->S

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)代码。

基本上这个类的功能就这样实现了。

如果有兴趣和我一起探讨这个问题,可以发信到zdibin2000@sohu.com

本文配套源码

上一页  1 2 

Tags:如何 EDITBOX 控件

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接