如何在EDITBOX控件中使用背景位图
来源:互联网 发布:lms软件噪音分析 编辑:程序博客网 时间:2024/06/05 20:40
在VC中,标准的WINDOWS控件如TREEVIEW,EDITBOX,COMBOBOX和LISTBOX等控件都不支持选择背景位图的属性,所以如果要使这些标准控件达到这种效果,必须有些非常规的方法。本文介绍一个CEDIT类如何实现背景位图,并且可以更换背景的例子。可能实现的方法还有其它种,如果有兴趣可以大家探讨。
本文程序运行效果图
下面介绍CMYEDITCTRL类几个关键变量和函数。
第一步在该类中增加几个变量;
2.1 OnChange();
如果没有这个函数,你敲几个字符如 ABCDEDFG,然后删除两个FG,但是EDITBOX并未更新。添加这个函数主要是这个原因。
也类似,是你鼠标选择时候的刷新问题,如果你有兴趣,可以先把它注释掉,看看BUG是怎么出现的。
一般的文字的默认背底是白色的,这儿选择了透明的形式,所以底图可以显示。
主要把选好的背景位图显示出来。
基本上这个类的功能就这样实现了。
本文程序运行效果图
下面介绍CMYEDITCTRL类几个关键变量和函数。
第一步在该类中增加几个变量;
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);各个函数的具体作用:
2.1 OnChange();
如果没有这个函数,你敲几个字符如 ABCDEDFG,然后删除两个FG,但是EDITBOX并未更新。添加这个函数主要是这个原因。
void CMyEditCtrl::OnChange() {Invalidate(); ///强制进行更新}2.2 OnLButtonUp();
也类似,是你鼠标选择时候的刷新问题,如果你有兴趣,可以先把它注释掉,看看BUG是怎么出现的。
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)代码。
基本上这个类的功能就这样实现了。
- 如何在EDITBOX控件中使用背景位图
- 如何在EDITBOX控件中使用背景位图
- 如何在树型控件中使用背景位图
- 如何在树型控件中使用背景位图
- 如何在ListBox中选择背景位图
- 如何在VC中显示透明背景位图
- 使用画刷在背景中平铺位图
- 用VC实现在TreeView中使用背景位图
- 如何将位图缩放显示在Static控件中
- 实现对话框在位图作为背景时的控件透明
- 实现对话框在位图作为背景时的控件透明
- 在Qt中如何为对话框(控件)设置背景?
- VC中实现带有背景位图的树型控件
- VC中实现带有背景位图的树型控件
- VC中实现带有背景位图的树型控件
- VC中实现带有背景位图的树型控件
- VC使用位图作为对话框或者控件背景
- 在flash控件中设置使用透明背景播放影片
- javascript截取中英文混排字符串
- 糟糕的三个月
- 添加收藏夹对话框代码
- autodesk笔试题
- lnux守护进程编程要点
- 如何在EDITBOX控件中使用背景位图
- 其他公司的笔试题1
- 成人预言
- 设计模式--Decorator---结构型
- 动态资源树的生成
- 判断是否上传图形文件
- SAP笔试题
- JDOM操作XML文件
- 看了这篇文章, 不知道大家啥感觉?Teenage mother sentenced over death of newborn baby