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

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

 2010-06-27 20:41:53 来源:WEB开发网   
核心提示:在VC中,标准的WINDOWS控件如TREEVIEW,如何在EDITBOX控件中使用背景位图,EDITBOX,COMBOBOX和LISTBOX等控件都不支持选择背景位图的属性,如果你有兴趣,可以先把它注释掉,所以如果要使这些标准控件达到这种效果,必须有些非常规的方法

在VC中,标准的WINDOWS控件如TREEVIEW,EDITBOX,COMBOBOX和LISTBOX等控件都不支持选择背景位图的属性,所以如果要使这些标准控件达到这种效果,必须有些非常规的方法。本文介绍一个CEDIT类如何实现背景位图,并且可以更换背景的例子。可能实现的方法还有其它种,如果有兴趣可以大家探讨。

本文程序运行效果图

下面介绍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);
}

1 2  下一页

Tags:如何 EDITBOX 控件

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