QQ登录

只需一步,快速开始

59上位机VC MFC带任意背景图的编辑框

[ 复制链接 ]
59上位机VC MFC带任意背景图的编辑框.jpg

59上位机VC MFC带任意背景图的编辑框


功能展示

正常情况下我们新建的默认程序,编辑框背景都是白色很是乏味,如果我们为编辑框设置张漂亮的背景图片,就是吸引用户美化我们的程序界面,我们当前例程就实现一这一功用,效果如图
要点提示
对背景的处理是通过WM_ERASEBKGND消息来实现。对应的处理函数为OnEraseBkgnd(); 为消除编辑框中文本的背景色影响,我们也得在CtlColor()函数中通过调用 pDC->SetBkMode(TRANSPARENT);设置文本背景模式为透明;在编辑框内容发生变化时,我们进行重画便可实现编辑框背景图片的任意设置;

当然这里还得定义一个位图的变量用于保存编辑框所设置的位图才行  CBitmapm_BkBitmap;
实现功能
1.新建基于对话框的应用程序
2.从编辑框类派生一个自己的类class CBmpEdit : public Cedit;
3.给这个新建的类添加函数CtlColor(), OnChange() ,OnEraseBkgnd()函数,函数实体为
  1. BOOL CBmpEdit::OnEraseBkgnd(CDC* pDC)
  2. {
  3.         if (m_BkBitmap.GetSafeHandle())
  4.         {
  5.                 CDC memDC;
  6.                 memDC.CreateCompatibleDC(pDC);
  7.                 memDC.SelectObject(&m_BkBitmap);
  8.                 BITMAP m_Bmp;
  9.                 m_BkBitmap.GetBitmap(&m_Bmp);
  10.                 int x = m_Bmp.bmWidth;
  11.                 int y = m_Bmp.bmHeight;
  12.                 CRect rect;
  13.                 GetClientRect(rect);
  14.                 pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&memDC,0,0,x,y,SRCCOPY);
  15.                 memDC.DeleteDC();
  16.                 return TRUE;
  17.         }

  18.         return CEdit::OnEraseBkgnd(pDC);
  19. }
复制代码
  1. void CBmpEdit::OnChange()
  2. {
  3.         Invalidate();
  4. }

  5. HBRUSH CBmpEdit::CtlColor(CDC* pDC, UINT nCtlColor)
  6. {
  7.         pDC->SetBkMode(TRANSPARENT);
  8.         return NULL;
  9. }
复制代码
4.添加用以保存背景位图的变量private: CBitmap m_BkBitmap;及设置它的函数public:
voidSetBkBitmapID(UINT nSourceID);
5.最后是这个自定义编辑框类的使用,在对话框中添加此类头文件,添加一编辑框控件,设置一些多行,换行等属性,并关联一个变量CBmpEdit   m_Edit;这个变量进行加载位置便可实现编辑框位图的任意修改

请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:59.上位机VC MFC带任意背景图的编辑框.rar 
文件大小:510.91 KB  售价:10金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我


  

您的支持是我们创作的动力!  

  

您可花点闲钱积分自助任意充值

  

成为VIP会员 全站资源任意下载永久更新!



回复

使用道具 举报

快速回复 返回列表 客服中心 搜索