QQ登录

只需一步,快速开始

93上位机VC MFC滚动条实现自绘美化效果

[ 复制链接 ]

93上位机VC MFC滚动条实现自绘美化效果

93上位机VC MFC滚动条实现自绘美化效果

93上位机VC MFC滚动条实现自绘美化效果


功能展示

滚动条简单易用,但默认的界面并不是很美观,我们当前例程使用贴图的方式,实现滚动条的美化,例程只要调用一个函数,传美几张位图便可快速实现美化功能,效果如图
要点提示
我们当前例程滚动条的美化主要是通过四幅位图进行美化,即实现滚动条左右箭头,前后背景的贴图;

例程封装了一个自定义类供大家参考学习,只要通过调用 CreateScroll()函数便可实现自绘的美化滚动条;
实现功能
1.新建基于对话框的应用程序
2.复制例程中CCustomScroll类的两文件CustomScroll.cpp及CustomScroll.h到工程根目录,并加载到工程;
3.在主对话框中使用自定义类CCustomScroll,当前例程实现三个滚动条控制RGB颜色值,所以定义了三个类变量 CCustomScroll m_Blue; CCustomScroll m_Red;CCustomScroll m_Green; 在对话框资源中添加四个图片控件依次修改ID为   IDC_R ,IDC_G , IDC_B,IDC_RECT作为三滚动条控件及颜色显示区;
现添加3 静态文本控件,依次修改ID IDC_RVALUE, IDC_GVALUE, IDC_BVALUE作为颜色值的显示
4.复制工程中已使用的十二位图,作为三个滚动条的贴图,也可自行准备;再初始化三滚动条
m_Blue.CreateScroll(this,IDC_B,255,IDB_BLEFTARROW,IDB_BRIGHTARROW,IDB_BCHANELBK,IDB_BFORGROUND);
m_Blue.SetScrollRange(0,255);
m_Green.CreateScroll(this,IDC_G,265,IDB_GLEFTARROW,IDB_GRIGHTARROW,IDB_GCHANELBK,IDB_GFORGROUND);
m_Green.SetScrollRange(0,255);
m_Red.CreateScroll(this,IDC_R,275,IDB_REDLEFT,IDB_REDRIGHT,IDB_REDBK,IDB_REDFOROUND);

m_Red.SetScrollRange(0,255);
5.最后是在主对话框中响应滚动条滚动消息OnHScroll(),并实现颜色值的绘制;
  1. void CGkbc8Dlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
  2. {
  3.         // TODO: Add your message handler code here and/or call default
  4.         CCustomScroll* temp = (CCustomScroll*)(CWnd*)pScrollBar;         
  5.         int pos ;
  6.         if (temp == NULL)
  7.                 return;
  8.         if (nSBCode==SB_LINELEFT )
  9.         {
  10.                 pos =  temp->m_CurPos-nPos;
  11.         }
  12.         else if (nSBCode==SB_LINERIGHT)
  13.         {
  14.                 pos =  temp->m_CurPos+nPos;
  15.         }
  16.         else
  17.         {
  18.                 pos = nPos;
  19.         }
  20.         if (temp->m_hWnd==m_Blue.m_hWnd)
  21.                 m_Bvalue = pos;
  22.         else if(temp->m_hWnd==m_Green.m_hWnd)
  23.                 m_Gvalue = pos;
  24.         else if(temp->m_hWnd==m_Red.m_hWnd)
  25.                 m_Rvalue = pos;

  26.         CString sText;
  27.         sText.Format("%i",m_Bvalue);
  28.         SetDlgItemText(IDC_BVALUE,sText);
  29.         sText.Format("%i",m_Gvalue);
  30.         SetDlgItemText(IDC_GVALUE,sText);
  31.         sText.Format("%i",m_Rvalue);
  32.         SetDlgItemText(IDC_RVALUE,sText);

  33.         FillRect();

  34.         CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
  35. }
复制代码
  1. void CGkbc8Dlg::FillRect()
  2. {
  3.         CDC* pDC = GetDlgItem(IDC_RECT)->GetDC();
  4.         CRect rect;
  5.         GetDlgItem(IDC_RECT)->GetClientRect(rect);
  6.         CBrush brush(RGB(m_Rvalue,m_Gvalue,m_Bvalue));
  7.         pDC->FillRect(rect,&brush);
  8.         GetDlgItem(IDC_RECT)->ReleaseDC(pDC);
  9. }
复制代码
其中三个变量BYTE m_Rvalue;//RGB颜色值BYTE m_Gvalue; BYTEm_Bvalue;为我们在主对话框中定义用于保存颜色的变量,已在构造函数中初始化为0


我们来演示下功能实现的整个过程

请点击此处下载

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

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

文件名称:93.上位机VC MFC滚动条实现自绘美化效果.rar 
文件大小:148.06 KB  售价:10金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

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

  

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

  

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


回复

使用道具 举报

点击查看
快速回复 返回列表 客服中心 搜索