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

在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);
}

时间: 2024-11-03 21:40:48

如何在EDITBOX控件中使用背景位图的相关文章

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

一.引言: 对于TREWVIEW控件的背景位图的实现,目前介绍的文章比较少,有人虽然实现了,但是在点击TREE时,背景闪动比较厉害.本人在参照别人代码的基础上,把它总结一下,同时解决了这个背景闪烁的问题.目前FLASHGET1.3版也实现了TREEVIEW的背景位图.大家可以参照一下. 本文程序运行效果如下图: 二.原理: 因为WINDOWS标准TREEVIEW控件不支持背景位图,所以如果需要设置背景位图就需要先让其在内存CDC对象上对TREEVIEW缺省绘图,然后在选择背景位图,与缺省位图合成

如何在DataGrid控件中隐藏列

datagrid|datagrid控件 如何在DataGrid控件中隐藏列前言:    asp.net在提供我们丰富的内置控件方便我们开发的同时,一些格式化的东西也限制了我们灵活的要求.在DataGrid控件中,我们遇到的一个非常典型的问题就是如何把我们不想显示的列根据需要随时隐藏掉.解决方案:    我们不能隐藏在DataGrid里自动生成列的主要的一点原因是:DataGrid里的column不能被DataGrid的属性DataGridColumn增加.    基于以上原因,我们可以提出两种不

vs2008-如何在ocx控件中调用另一个已经封装完整的ocx控件?

问题描述 如何在ocx控件中调用另一个已经封装完整的ocx控件? ocx开发初学者一名. 手上有一个完整的ocx控件A,我希望在另一个控件B中插入这个A.在调用控件B的界面中可以看到A的界面.就像用一个exe调用ocx一样实现是否可行? vs2008环境.

flex3-flex4 如何在MenuBar控件中的根节点加上icon图标

问题描述 flex4 如何在MenuBar控件中的根节点加上icon图标 能否实现上图的样子.新手求指教~~

如何在DataGrid控件中实现自定义分页_自学过程

如何在DataGrid控件中实现自定义分页      在一般情况下,DataGrid控件每次实现翻页操作时,都会将数据源中的数据重新调用一次,当数据中 数据很多时,这样做就会很浪费系统资源和降低程序的执行效率.这时候我们一般通过自定义分页来解 决这个问题.     DataGrid控件的AllowCustomPaging属性用来获取或设置DataGrid控件是否允许自定义分 页;VirtualItemCoun属性用来获取或设置在使用自定义分页时DataGrid中实际的项数.要实现自定义分 页,必

如何在 MSChart控件中 创建自定义 "文本标注" ?

问题描述 如下图所示:C#控件MSchart画的曲线图,在图表区上方有自动生成的文字标注,不是title,也不是lable,不知道怎么做,请问有了解的吗? 解决方案 解决方案二:应该说是自定义文本,动态生成的文本标注!!解决方案三:可以用TextAnnotation如下所示:TextAnnotationtxtAn=newTextAnnotation();txtAn.Alignment=ContentAlignment.BottomLeft;//对齐方式txtAn.ForeColor=System

如何在ASCX控件中,设者父页面的标题等属性?

问题描述 有一个ASCX控件,用于显示新闻的详细内容阅读新闻的时候,让父页面的标题和新闻的标题一致在ASCX控件中,引用了一个ASP标签<asp:Labelclass="Head"id="lblTitle"runat="server"/>请问如何在ASCX中如何设置可以让父页面的标题与新闻标题一致谢谢大家 解决方案 解决方案二:这个不是设置的你写个脚本在页面加载完后调用把父页面的标题置成lblTitle的Text解决方案三:你要找该控

如何在ActiveX控件中使用字体

字体的使用是ActiveX控件制作过程中不可缺少的部分.本文将深入浅出地介绍在ActiveX控件中制作过程中如何使用字体.本文所提及的ActiveX控件制作是指利用VC++6.0的MFC ActiveX ControlWizard 工具,用其它方法制作 ActiveX 控件本文不作讨论. 本文专门设置了一些例程,以便您能够更好地掌握这些内容.这些例程都是完整的ActiveX控件制作源代码.为了突出重点,本文仅对字体使用相关部分的源代码作较详细的介绍,其余部分的代码本文不作过多讨论.字体作为一种属

自定义用户控件中加入背景等内容后怎么有时在引入文件中不显示?

问题描述 我在自定义用户控件假定文件名userControl1.ascx布局中如引入背景图片,路径如为../images/1.jpg,而在引入文件如default.aspx中加入控件后不显示背景图片.文件相对图片的路径是images/1.jpg,而在userControl1.ascx将路径改为images/1.jpg就可以显示了.挺奇怪!那如果在其他路径下的文件要使用userControl1.ascx文件,又该如何处理呢?偶是本论坛的新成员,虽然我经常来CSDN论坛,但很少发帖子.所以囊中羞涩,