一个简单的工控管道控件

一、本人一直从事工控行业控制软件编程,经常要模拟物料传输过程,为了使效果更加生动,故借鉴VC知识库(VCKBASE.COM)中高人的一些代码,做了一个简单的控件,拿出来和大家一起分享。不足之处还请各位指点。

二、代码比较简单主要的部分是画管道,代码如下:

void CMultiAxtiveX1Ctrl::OnDraw( CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)
{
   CBrush brBk[64]; //创建画刷
   int nWidth = rcBounds.Width();
   int nHeight = rcBounds.Height();
   CRect rct;
   int j=0;
   if (m_ColorR>255 ||m_ColorR<0) //合理化m_ColorR值
       m_ColorR=255;
   for (int i = 0; i < 64; i ++)//设置画刷颜色
   {
       if (i<32)
         brBk[i].CreateSolidBrush(RGB(m_ColorR - (32-i % 32),
              m_ColorR - (32-i % 32),
              100));
       else
         brBk[i].CreateSolidBrush(RGB(m_ColorR - (i % 32),
              m_ColorR - (i % 32),
              100));
   }
   //画渐变
   for (i = rcBounds.top; i <= nHeight + 2; i ++)
   {
       rct.SetRect(rcBounds.left, i,nWidth, i + 1);
       pdc->FillRect(&rct, &brBk[((i * 63) / nHeight)]);
   }
   for( j=0;j<10;j++)
   {
       rct.SetRect(rcBounds.left+m_grid[j]*nWidth/40, rcBounds.top ,
       rcBounds.left+m_grid[j]*nWidth/40+nWidth/40, nHeight );
       pdc->FillRect(&rct, CBrush::FromHandle((HBRUSH)
       GetStockObject(WHITE_BRUSH)));
   }
   for (i = 0; i < 64; i ++)
       brBk[i].DeleteObject();
}

三、安装使用和应用

使用regsvr32 注册该控件(regsvr32 multiAxtiveX.ocx),注册后可在vb,vc,delphi等编程环境中使用。主要有2个属性一个方法:

1.direction控制流动方向,其值为0或1;

2.colorRed设定管道颜色,其值范围0-255;

3.flow方法驱动管道流动。

4.下面是控件在vb中使用的效果。

图一 VB中使用管道控件

四、结束语

利用vc这个强大的工具,我们可以做出更好更出色的控件。

本文配套源码

时间: 2025-01-30 01:38:37

一个简单的工控管道控件的相关文章

一个简单的ASP.MVC分页控件

分页功能实现方面参考了网上的一些内容,加上自己的一些修改,使用方式如 下: (鉴于分页代码基本上和别人的没什么两样,所以这里就省略了.) 封装扩展方法 public static string Pager(this HtmlHelper html, IPageData model, bool alwaysShow,bool showNumber) { string text = "<!--没有任何数据,所以不显示分页控件-->"; bool show = model.Tot

打造一个通用ASP.NET数据分页控件

asp.net|分页|控件|数据 对于几乎所有的数据表现Web应用来说,组织好数据的显示方式.避免给用户带来混乱的感觉就是最主要的目标之一.每个页面显示20条记录当然是可以接受的,但每页显示10000条记录就很容易给用户带来不便了.将数据分成多个页面显示,即对数据进行分页,是解决此类问题的最常见的办法. 一.慨述 ASP.NET本身只提供了一个支持数据分页的控件,即DataGrid分页控件,不过它比较适合Intranet环境使用,对于Internet环境来说,DataGrid分页控件提供的功能似

mfc c++ c#-做一个类似word的插入表格控件

问题描述 做一个类似word的插入表格控件 请问怎样实现,思路是怎样,有类似的例子吗(求链接)?急求~谢谢! 解决方案 最简单是是使用BCGControlBar套件,不但插入表格,整个Office界面都能模仿出来. 解决方案二: http://blog.csdn.net/zw514159799/article/details/9148385

一个相当独立的.通用分页控件c#源码

分页|控件      通用ASP.NET数据分页控件 对于几乎所有的数据表现Web应用来说,组织好数据的显示方式.避免给用户带来混乱的感觉就是最主 要的目标之一.每个页面显示20条记录当然是可以接受的,但每页显示10000条记录就很容易给用户带来不便了.将数据分成多个页面显示,即对数据进行分 页,是解决此类问题的最常见的办法. 一.慨述 ASP.NET本身只提供了一个支持数据分页的控件,即 DataGrid分页控件,不过它比较适合Intranet环境使用,对于Internet环境来说,DataG

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

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

文档-编写一个java程序,将webbrowser控件嵌入进去

问题描述 编写一个java程序,将webbrowser控件嵌入进去 用java语言编写一个程序实现从网页中找到文档链接并下载和删除.拜托各位啦 解决方案 http://blog.csdn.net/b_h_l/article/details/8266899

用Winform开发了一个程序,界面上的控件在Win7下是基本对齐的,到了WindowsServer2008下就变的完全对不齐了?请问这是什么原因?

问题描述 用Winform开发了一个程序,界面上的控件在Win7下是基本对齐的,到了WindowsServer2008下就变的完全对不齐了?请问这是什么原因?RT 解决方案 解决方案二:不知道你是用什么方法"对齐"的,所以无法判断.比如说你用"空格"来搞什么"对齐",那么不同系统的同一个主题下的细节设置也是有调整的,空格在高版本的windows下肯定就变宽了一些,那么自然在高版本windows下就"鼓出去"了.你用于"

mfc c++ list 控件-一个关于mfc的list第三方控件的使用

问题描述 一个关于mfc的list第三方控件的使用 在msdn上下了一个list的第三方控件,叫做reportlist. 这个第三方控件提供的接口非常方便好用,在dialog中试过了,没问题. 但是在单文档中create时,在create内部报错,不知道是什么原因,忘高手帮忙解答,非常感谢. 解决方案 可能是不兼容吧.create控件上不能有reportlist. 要不就是没引进来啊.

请教一个在aspx页的 服务器端控件 的 属性 中使用嵌入代码的问题(&amp;amp;lt;%= %&amp;amp;gt;,&amp;amp;lt;%# %&amp;amp;gt;)

问题描述 最近遇到了一个在aspx页的服务器端控件的属性中使用嵌入代码的问题,请大家看看比如一个链接控件:在NavigateUrl属性中绑定数据,并添加字符串<asp:HyperLinkID="StartMeeting"runat="server"Target="_blank"NavigateUrl='<%#"PagesLecturer/lecture.aspx?HandoutId="+Eval("Han