C++.ATL.VB.C# COM创建.调用互操作
[妈妈晒]美丽的菊花
[妈妈晒]美丽的菊花你们看见过菊花吗?菊花色彩丰富,品种极多,还具有药用功效,称得上是花中之王。
秋天到了,公园里长满了菊花,远远望去,它们千姿百态,有的像一个圆球,风一吹,就上下摇摆起来,就像一个个胖乎乎的小脑袋向我们点头;有的像一团卷发,一缕缕发丝在风地抚摸下翩翩起舞;有的菊花一个挨着一个,就像一片彩色的海洋。
走近一看,它们色彩丰富,有粉色、黄色、白色、绿色、紫色、红色……我闻了闻,一阵刺鼻的清香扑面而来,感觉自己置身于花界之中;我摸了摸,它的花瓣非常柔软,好像是一片片羽毛在挠我痒痒。
菊花不仅生产在秋季,夏季与冬季也有菊花,虽然夏菊与冬菊并不多见,但它们的美貌也能与秋菊一见高低。
菊花不仅美丽,而且还有药用功能和其他特殊意义呢!菊花有散风清热,平肝明目的作用,它可用于风热感冒,头痛眩晕;对人体内的一些有害细菌有抑制作用;可增强毛细血管抵抗力;菊甙有降压作用;现代它还用于冠心病、高血压病的治疗。
除了这些,菊花可是一种上等好茶,闻一闻那菊花茶,菊花的香味全部溶入到其中,让我有一种心旷神怡的感觉。
菊花被称为中国文人心目中的“四君子”之一,它有广泛而深远的象征意义。
它是隐士的象征,代表着人们对幽静安逸生活的向往;它是斗士的象征,“待到秋来九月八,我花开后百花杀”无不体现了菊花的勇敢气概;它是伤感的象征,一到清明或冬至,人们就用黄菊或白菊去上坟,代表我们对已故亲人的思念;它高洁品格的象征,当菊花调谢时,花瓣不会象桃花一样一片一片的掉落下来,而是持久的团聚在一起,体现了菊花成员团结的精神。
美丽的菊花,你的外表让我着迷,你的功能让我喜欢,你的特殊意义让我敬仰。
你配得上一个真正“花中之王”的称号,你永远在我心中散发光芒。
妈妈感言:之前没有太多关注女儿的作文,因为女儿自己都能独立完成,三年级结束,老师说女儿的作文,抒情类写的不错,但记事类不行,也就是事写不实。
然而我就开始学习非常老师的课,学了两天后,感触就很深,四个对称,六尘六根及八大方法,通俗易懂,跟女儿讲了后,也一子理解了,这篇文章是上上周的作业,开头是女儿自己想,身子我提示分三个对称块来写,查上网上菊花的照片及相关资料,女儿就自己独立完成了,结尾也是女儿自己完成,用了对称句,与开头相互应,非常的不错。
ATL编程初级教程
ATL编程初级教程介绍 本教程的⽬的是告诉你如何使⽤ATL创建⼀个COM服务器,并使⽤Visual C++和Visual Basic程序来分别调⽤这个服务器。
我并不想深⼊探讨COM的细节,也不想让你深陷于IDL之中。
这⼀教程只是为VC++的新⼿程序员设计的,告诉他们利⽤ATL来创建⼀个COM对象有多么简单,并让他们能对ATL产⽣更多的兴趣。
第1步:启动ATL COM Wizard 你所需要做的第⼀件事情就是启动Visual C++并创建⼀个新的⼯程,选择“ATL COM Wizard”,⼯程名为“Simple_ATL”。
设置好⼯程的路径之后,单击OK按钮。
你会看到,屏幕上给了你若⼲选项。
第⼀个选项为“Server Type”。
我们将要创建⼀个服务器DLL,所以请确认服务器的类型选为“Dynamic Link Library”。
我们并不需要关⼼下⾯的其它三个复选框,所以我们可以将它们忽略掉。
按下Finish按钮,这样向导就会为你产⽣适当的⽂件了。
之后,⼀个“New Project Information”窗⼝就会出现,你可以从上⾯得知向导都会创建什么⽂件,按下“OK”接受这⼀切。
第2步:创建⼀个新的ATL对象 请确认你能在VC++的IDE中看到Workspace View,如果不能的话则请单击“View”菜单,然后选择“Workspace”。
在这个视图中你会看到三个选项卡,请单击“ClassView”栏,你应该会看到“Simple_ATL Classes”。
请在此右击⿏标键,并在弹出菜单中选择“New ATL Object”,你将会看到下⾯这样的窗⼝: 默认的选择项“Simple Object”就是我们所要的了,请单击next按钮,你会来到“ATL Object Wizard Properties”窗⼝中。
在“Short Name”⽂本框中输⼊“First_ATL”。
请注意,这时候向导就会⾃动地填写其它的⽂本框。
VB, VC, CSharp混合编程-动态库相互调用
如何在VS2008下开发跨开发平台的程序为继承和使用在不同开发平台(VC++6.0, C++Builder, , C#.NET, )下的已有代码和程序,允许多开发人员合作且分工开发,允许各开发人员使用自己擅长的开发平台,但最终会集合到VS2008开发环境中,这需要在VS2008开发环境下,能够实现代码或程序的共享。
为跨平台/多人员协作模式提供良好的途径,是大型软件开发之必需。
变量类型对照表.xls1.VC++.NET 如何生成VC++ Win32 DLL (*.dll)VC++ Win32 DLL即VC++6.0环境下的DLL。
●File->New Project…●Other Languages->Visual C++->Win32 Project,在Name框内输入Win32 DLL名称,比如“DLLTray”->OK●Next选择DLL->Finish。
一个动态库框架形成。
●为确保能被外部程序调用,VC动态库函数需要设置成__stdcall。
头文件(*.h)中加入该函数的声明语句(DLLTray.h)。
#include<windows.h>int__declspec (dllexport) __stdcall SearchNum_Win32(int number);●可执行文件(*.cpp)中加入执行实现代码(DLLTray.cpp)int__declspec (dllexport) __stdcall SearchNum_Win32(int number){return number + 10;}●Def文件中加入(DLLTray.def)LIBRARY "DLLTray"EX PORTSSearchNum_Win32DLLTray.DLL源代码-2.如何生成,C#.NET,VC++.NET可执行程序(*.exe)或类库(*.dll)File->New Project…->Windows Forms Application (or Class Library, Console Application)3.如何调用Windows API或VC++ Win32 DLL在的可执行程序里重新声明该函数,声明后即可作为自己的函数进行调用。
vb编程代码大全
vb编程代码大全Visual Basic (VB) 是一种广泛用于软件开发的高级编程语言,可以用于开发 Windows 应用程序、Web 应用程序、数据库应用程序等。
在本文中,将介绍一些常用的 VB 编程代码,帮助初学者快速入门和提高编程水平。
一、基本数据类型1. 整型数据在 VB 中,整型数据可以使用 Integer 类型表示,范围为 -32,768 到32,767。
定义整型变量的代码如下:```Dim num As Integernum = 10```2. 浮点数据浮点数据可以使用 Single 或 Double 类型表示,分别表示单精度浮点数和双精度浮点数。
定义浮点变量的代码如下:```Dim num As Singlenum = 3.143. 字符串数据字符串数据可以使用 String 类型表示,可以存储文本数据。
定义字符串变量的代码如下:```Dim str As Stringstr = "Hello, World!"```二、控制流程1. If...Then...Else 语句If...Then...Else 语句用于根据条件执行不同的代码块。
例如:```Dim num As Integernum = 10If num > 0 ThenMsgBox("Num is positive.")ElseMsgBox("Num is negative.")End If2. For 循环For 循环用于重复执行一段代码。
例如:```For i = 1 To 10MsgBox(i)Next i```3. Do While 循环Do While 循环在满足条件时执行代码块。
例如:```Dim i As Integeri = 1Do While i <= 10MsgBox(i)i = i + 1Loop```三、数组1. 一维数组一维数组在 VB 中用于存储相同类型的多个元素。
(完整word)VC++ VB和C语言三者之间的相互关系和不同
详解一:VC++和VB,还有C语言有的区别与联系初学者经常提出这样的问题:是学c++好还是学 Visual c++好?其实,这是个很奇怪的问法,就好像在问:是学开车好还是学开福特车好?开车是一种普遍的技术,用这个技术可以控制福特车或奥迪车,这在技术上没有很大的差别,最多只是一些开关的位置不同而已。
同样的道理,c++是一种程序语言,现在已经成为ISO标准,是一种普遍的技术。
Visual c++只是一种协助用户使用c++语言设计软件的工具。
类似的工具还有很多,例如Borland c++ Builder,设置还有免费的GNU c++,他们都是协助用户使用c++设计软件的工具。
VC是一种功能非常强大的技术。
在Windows下,VC几乎无所不能.但每个工具都有所长短。
这里只列举最实用、最热门的一些应用.VC可以写WEB上的控件:Web控件大家相对不会陌生.各种流氓插件也是属于其中一种。
现在Web 控件开发非常火暴.各行各业都存在各式各样的控件。
例如,百度的搜霸,银行的各种安全控件。
VC可以开发优秀的基于通信的程序:现在网络发展,各种通信控件比比皆是。
例如,大家使用聊天工具、BT下载工具、视频点播工具之类.这也是现在网络应用的热点。
VC可以开发高效灵活的文件操作程序:这类包括各种文件管理器和网络U盘的后台系统。
VC是编CAD软件的唯一选择!!!包括AUTOCAD,UG的二次开发:这两年国产CAD飞速发展,VC的功劳不可抹杀。
VC开发各种游戏:游戏开发一直是国家提倡的产业。
游戏开发的首选工具就是VC。
虽然VC属于一个传统编程语言,但实际岗位还是非常巨大。
每年的人才需求量不比网站开发少。
而待遇往往比网站开发的高.无论从应用角度,还是工作角度,学习VC的价值是非常有前途的。
很多人都说VC太难学。
这是由于VC的体系非常大,涉及系统的内核。
但是,实际应用不可能用到所有的内容.所以,学习时候,一定要有选择的学习。
学习VC,通常需要遵循以下流程。
vb6编程代码大全
vb6编程代码大全Time 返回系统时钟的当前时间。
Date 返回系统时钟的当前日期。
Now 返回代表当前日期和时间的编码值。
该函数经常用作其它系统时钟函数的参数。
Hour(Time) 返回指定时间的小时部分(0到23)。
Minute(Time) 返回指定时间的分钟部分(0到59)。
Second(Time) 返回指定时间的秒部分(0到59)。
Day(Date) 返回月份中的日期数(1到31)。
Month(Date) 返回日期中的月份(1到12)。
Year(Date) 返回日期中的年度。
Weekday(Date) 返回日期中代表一周中的星期几。
Abs(n) 返回n的绝对值。
Atn(n) 返回n的反正切值,以弧度为单位。
Cos(n) 返回n的余弦值,以弧度为单位。
Exp(n) 返回e的n次方。
Rnd(n) 产生0到1之间的一个随机数。
Sgn(n) n小于0时返回-1,n等于0时返回0,n大于0时返回1。
Sin(n) 返回n的正弦值,以弧度为单位。
Sqr(n) 返回n的平方根。
Str(n) 把数值值转换成字符串。
Tan(n) 返回n的正切值,以弧度为单位。
Val(n) 把字符串转换为数值值。
Int(n) 返回数字的整数部分。
8.4-->9Fix(n) 返回数字的整数部分。
8.4-->8以上函数在VB6和VBScript中都适用,在。
NET里面要在前面加上相应的命名空间,如System.Math.Cos(),Microsoft.VisualBasic.Hour()。
数据类型转换函数:转换函数将表达式转换成CBool BooleanCByte ByteCCur Currency '只在VB7.0以下有效CDate DateCDbl DoubleCInt IntegerCLng LongCSng SingleCStr StringCVar Variant ‘只在VB7.0以下有效CVErr Error '只在VB7.0以下有效若想了解Visual Basic正在使用哪种变量类型,可使用VarType 函数。
VB三种程序结构VisualBasic语言作为结构化程序设计语言提供
3、
当逻辑型赋值给数值型时,True转换为-1,False转
换为0;反之,当数值型赋给逻辑型时,非0转换为True,
0转换为False.
2、MsgBox函数:向用户显示信息(输出
MsgBox语句: MsgBox (提示内容 [,答复按钮+图标][,标题]) MsgBox函数: Dim x As Integer X=MsgBox(提示内容 [,答复按钮+图标][,标题])
? Round(3.89456,3) 结果:3.895 说明:☆ 在三角函数中,以弧度表示;sqr的自变量不能是负数
☆ Rnd函数返回小于1,大于等于0的单精度随机数。 VB用于产生随机数的公式取决于称为种子(seed)的初始值。
默认情况下,每次运行一个应用程序,VB提供一相同的种子, 即Rnd产生相同序列的随机数。为了每次运行时,产生不同序 列的随机数,可执行Randomize语句,格式如下:
•答复按钮+图标:确定在消息框中按钮 的数目和类型,以及图标的类型。
•标题:显示在消息框标题栏上的文本。
"按钮"设置值及意义
分组 内部常数
VbOkOnly VbOkCancel 按 VbAboutRetryIgnore 钮 VbYesNoCancel 数 VbYesNo 目 VbRetryCancel
对 象 可 以 是 窗 体 ( Form ) 、 图 形 框 (PictureBox) 或 打 印 机 (Printer)。如果省略了对象,则在窗体上输出。 说明:① 表达式:可选项。可以是一个或多个表达式。当有多个表达式 时,要用分隔符(逗号、分号)隔开。当表达式缺省时,则屏幕显 示一个空行。 ② 输出格式分为标准输出格式和紧凑输出格式。 标准输出格式:以14个字符宽度划分为一个区段,每个数据项占一个区 段的位置。(数据项之间用逗号隔开) 紧凑输出格式:对于数值型数据,前面有一个符号位,后面有一个空格; 对于每个字符串,各个数据项之间没有间隔。(各数据项之间用分 号或空格作为分隔符)
vb和vc混合编程实例(ocx和dll)
vb和vc混合编程实例(ocx和dll)(转载)前⾔:由于以前⽤vb和vc++封装过dll和ocx⽂件. 或者在⽹上下的类;若重新编写和封装会很费时和费⼒. 如vb简单易⽤,对数据库操作通⽤类进⾏封装.现在vc中可以引⽤之。
另外由于vc执⾏效率⾼,某些较复杂算法或低层处理可在vc中进⾏封装. 这样经常要求混⽤.下⾯是实际中个例⼦记,分vb6.0,vc++各⾃创建和调⽤四个部分1: vb能封装ocx和active dll⽂件. 注意 active dll是⼀种动态,在被调⽤环境中不仅引⽤这个dll,⽽且还要引⽤这个dll所引⽤的其它⽂件,如 DBCommom.dll 是个数据库操作类封装,它引⽤了Ado 接⼝).其创建略,具体引⽤见后.2.vc中做dll时注意要提供接⼝,供其它程式调⽤.a>创建 win32 Dynamic-Link Library 如项⽬CMyTestDllb>加⼊成员function(在 .h中申明 .cpp中实现)//取电脑名称int CMyTestDll::GetComputerNameE(LPTSTR computer_name){DWORD buf=255;LPTSTR strname=new char[buf];if(GetComputerName(strname,&buf)!=0){strcpy(computer_name,strname);return 1;}return 0;}//计算两个值之和int CMyTestDll::Sum(int a, int b){return(a+b);}c.>⼀定要加上CMyTestDll.def ⽂件,并在在其中定义导出各个function及参数,否则不能被调⽤EXPORTSGetComputerNameE @1;Sum @2; @3;d.>编译成dll便可以.最好每个function定义int为返回值.3.vb引⽤vc中dll 和普通API函数⼀样.(vb的long对应 vc的int)'引⽤Private Declare Function GetComputerNameE Lib "⽬录\MyTestDll.dll" (ByVal strName As String) As LongPrivate Declare Function Sum Lib "⽬录\\MyTestDll.dll" (ByVal g As Long, ByVal b As Long) As Long'调⽤Dim str As String * 20 ' 注意对于传址,⼀定要定义其空间⼤⼩(数组可以不指定)dim a As Long, b As Longa=25 b=78result = GetComputerNameE(str)result=Sum(a, b)4.vc引⽤vb中ocx和dll如 C:\TestVb\DBCommon.dll 是个vb做的数据库通⽤类。
VB是可视化编程语言
VB是可视化编程语言,基于对象,很容易上手,很快就可以做出好的作品,但运行速度慢。
适于非专业人士学习使用。
C是面向过程的编程语言,运行速度快,也是目前使用率最高的编程语言,目前流行的面向对象语言,像C++,Java,C#,乃至Python等都是在C语言的基础上发展而来的。
因此,想更深入的学习编程,C语言是必由之路。
在语法上VB与C 区别很大!除了编程思想一致之外,语言形式的东西几乎没有一样的 .VC多用于系统编程,和Java在语法上有很多相似之处 .而java是c语言中的一个分支. java是面向网络的.深入学习当然是C语言比较好.如果是非专业人士当然是VB好一些.转自:/loveblue52081VB与C++或VB与C的区别,不止是一个人在我的博客里问这个问题!其实不然,很多学了一段时间的VB或是C++的同仁都不见得对两者之间的区别可以说讲得非常清楚,今天在这里,借LZ社区提供的这个平台给大家讲下这两个东西之间的区别吧...首先,说明的一点就是VB是一个开发平台或者说IDE(集成开发环境),而由于一般而言这个开发平台虽然基于basic,但是由于有一个好的父亲即微软公司把很多商业化的元素溶于到里面,使得它显得与本来的basic语言有着很大的区别,而多数人也就误以为VB也是一门语言,其实它只是和Eclipse 或者说NetBeans,或者说JBuilder或者说delphi一样的一个开发平台而已!而C++则是不折不扣的一门计算机高级语言.所以在某种程度上他们不具备可比性的哟.接下来,有人认为C++难学,而VB好学,这点个人认为这些人真的很可悲,可悲的不是他本人,而是在这我国这样的教育体质下...basic的容易是因为他有一个好的父亲微软,有一个好的IDE即Visual Basic,而C++的难学是至今为止没有一个好的开发平台,当时你可以说VC6,你可以说我的应用程序用MFC或者说用ATL写的com组件用得怪好,但他们真是那么方便吗?只要有一个好的平台IDE,一门语言就会风靡...所以Basic(VB)和C++在某种意义上是一样的哟,而且在业务逻辑的实现上C++更容易一些,因为它的面向对象的思想更接近于人的思维!再下来,就应该说说他们的本质区别,VB作为开发工具而言他使用basic这种面向过程的语言来进工作,把一个项目或者说一套解决方案分成若干个模块每个过程完成相应的工作.而C++是一种面向对象的编程语言,它的思想更接近于人的思维,它认为万物皆对象,而每个对象既是独立存在具有主动思维的个体,又可以是互相作用相互致约的联系!打比方说,我写个程序,一个杯子有自己的高度,外观,容量等属性,而且它也有自己的行为即它会有倒水这个动作!每个存在的实体都有自己的动作...最后说一下,国内不止少数人还认为C和C++有联系,或者说C++受到了C的一些致约不能发挥完整的面向对象的神髓,其实不然,我可以告诉你C++和C一点关系都没有,我长时间的从事C底层开发,写C的程序和写C++的程序完全是两个概念,不知道国内甚至是大学的老师或者说教授们都大言不惭的说什么C++相溶于C或者说什么C++编程还分为面向对象的和面向过程的...最可笑的是某国内的权威教程里也是这么编写的,这本某权威C++教程居然把C++分为面向过程和面向对象!我们的学员在这样的环境下学习不是可悲吗?这里我要说的是C++写的就是纯面向对象的,那些所谓面向过程的教材上写的也不是全完错,而是它们出现的地方应该是在C教程里,至少不是C++的教程...而如果说你看过一本C++的教程如C++ Primer你自己就会明白了.样子一样并不代表他们很一样.现在不是很流行C#和Java吗?同时学过这两门语言的同仁,会很惊喜的发现他们很多地方有着惊人的一致,而且不乏相互抄袭之意.比如在jdk 5.0出现的foreach,而在C#里 2.0,则引入了java中的同步线程,而且原来的hashtable和hashmap 在.net中也可以轻易找到,总之在java中有的方法或者说集合类在c#中一定可以找到.但是好像没有什么人说C#和java是同一个东西吧.好了,有点说远了,今天给大家讲了C++和VB的区别.有什么问题EM我,一定知无不言!。
托管代码&非托管代码
托管代码&非托管代码托管代码(managed code)由公共语言运行库环境(而不是直接由操作系统)执行的代码。
托管代码应用程序可以获得公共语言运行库服务,例如自动垃圾回收、运行库类型检查和安全支持等。
这些服务帮助提供独立于平台和语言的、统一的托管代码应用程序行为。
托管代码是可以使用20多种支持Microsoft .NET Framework的高级语言编写的代码,它们包括:C#, J#, Microsoft Visual Basic .NET, Micros oft JScript .NET, 以及C++。
所有的语言共享统一的类库集合,并能被编码成为中间语言(IL)。
运行库编译器(runtime-aware ompiler)在托管执行环境下编译中间语言(IL)使之成为本地可执行的代码,并使用数组边界和索引检查,异常处理,垃圾回收等手段确保类型的安全。
在托管执行环境中使用托管代码及其编译,可以避免许多典型的导致安全黑洞和不稳定程序的编程错误。
同样,许多不可靠的设计也自动的被增强了安全性,例如类型安全检查,内存管理和释放无效对象。
程序员可以花更多的精力关注程序的应用逻辑设计并可以减少代码的编写量。
这就意味着更短的开发时间和更健壮的程序。
非托管代码(unmanaged code)在公共语言运行库环境的外部,由操作系统直接执行的代码。
非托管代码必须提供自己的垃圾回收、类型检查、安全支持等服务;它与托管代码不同,后者从公共语言运行库中获得这些服务。
.net中托管代码的含义问题:什么是托管?托管是什么意思?托管代码就是基于.net元数据格式的代码,运行于.net平台之上,所有的与操作系统的交换有.net来完成,就像是把这些功能委托给.net,所以称之为托管代码。
非托管代码则反之。
举个例子l还可以使用mfc,atl来编写程序,他们基于MFC或者ATL,而不是.NET,所有是非托管代码,如果基于.net比如C#,则是托管代码非托管代码是指.NET解释不了的简单的说,托管代码的话,.net可以自动释放资料,非托管代码需要手动释放资料.什么是托管C++托管是.NET的一个专门概念,它倡导一种新的编程理念,因此我们完全可以把“托管”视为“.NET”。
VB调用C程序的方法动态链接库法1000字
VB调用C程序的方法动态链接库法
VB(Visual Basic)和C(C语言)是两种不同的编程语言,两
者的编译和语言规则不同,但是它们之间是可以相互调用的。
在VB
程序中,可以通过调用C程序实现更加复杂的功能。
方法一:动态链接库
动态链接库(Dynamic Link Library,简称DLL)是一种可以
被多个程序共享的程序库,它可以为不同的程序提供相同的功能,
这意味着它可以被VB程序以及其他程序调用。
VB程序可以使用Windows API来加载和调用DLL文件中的函数,而C程序可以通过
导入、导出关键字来将函数导出为DLL文件中的函数,从而被VB程
序调用。
在VB程序中,调用C程序所在的DLL文件中的函数,步骤如下:
1. 在VB程序中进行声明,指定要调用的函数名、返回类型和
传入参数。
例如:
```
Declare Function MyFunction Lib \
1。
vb编程代码大全
vb编程代码大全VB(Visual Basic)是一种易于学习和使用的编程语言,广泛应用于Windows平台的软件开发。
VB编程通过编写和执行代码来实现任务,可以用于创建各种类型的应用程序,包括窗体应用程序、控制台应用程序、Web应用程序等。
本文将介绍一些常用的VB编程代码,帮助读者快速入门和掌握VB编程技巧。
一、VB基本语法在开始编写VB代码之前,我们先来了解一些基本的VB语法规则。
1. 注释VB中的注释用于解释代码的作用,不会被编译器执行。
注释可以是单行注释(以“'”开头)或多行注释(以“/*”开始,“*/”结束)。
示例:' 这是一个单行注释/*这是一个多行注释可以跨越多行*/2. 变量声明在VB中,变量需要先声明后使用。
变量的声明可以包括数据类型和变量名称。
示例:Dim x As Integer '声明一个整型变量x3. 变量赋值在VB中,可以使用赋值语句将一个值赋给变量。
示例:x = 10 '将变量x赋值为104. 运算符VB支持常见的运算符,包括算术运算符、比较运算符和逻辑运算符等。
示例:Dim a As Integer, b As Integera = 10b = 5Dim c As Integerc = a + b '加法运算c = a - b '减法运算c = a * b '乘法运算c = a / b '除法运算c = a Mod b '取余运算c = a > b '比较运算c = (a > 0) And (b > 0) '逻辑运算5. 控制结构VB中的控制结构包括条件语句和循环语句。
条件语句通过判断条件来选择不同的执行路径。
循环语句可以重复执行一段代码。
示例:If condition Then' 执行语句块1ElseIf condition2 Then' 执行语句块2Else' 执行语句块3End IfFor i = 1 To 10' 执行循环体Next i以上是VB的基本语法规则,通过掌握这些语法,可以编写简单的VB程序。
C与VB的类型转换
HWND, HDC, HMENU ByVal variable As Long 结果为 Long 类型的表达式等Windows 句柄
INT, UINT ByVal variable As Long 结果为 Long 类型的表达式
LONG ByVal variable As Long 结果为 Long 类型的表达式
CHAR ByVal variable As Byte 结果为 Byte 类型的表达式
COLORREF ByVal variable As Long 结果为 Long 类型的表达式
DWORD ByVal variable As Lriable As Integer 结果为Integer 类型的表达式
LRESULT ByVal variable As Long 结果为 Long 类型的表达式
NULL As Any 或 ByVal Nothing 或 ByVal variable As Long ByVal 0& 或 VBNullString
LPRECT ByVal variable As type 自定义类型的任意变量
LPSTR, LPCSTR ByVal variable As String 结果为 String 类型的表达式
LPVOID ByVal variable As Any 任何变量(在传递字符串的时候使用ByVal)
c中的数据类型 VB中的声明 结果
ATOM ByVal variable As Integer 结果为Integer 类型的表达式
BOOL ByVal variable As Boolean 结果为 Long 类型的表达式
BYTE ByVal variable As Byte 结果为 Byte 类型的表达式
wincc上可以很方便的编写vb脚本和c脚本()
WinCC上可以很方便的编写VB脚本和C脚本,但是调试起来还是比较费劲的。
下面介绍一下个人的应用体会。
1,VB,最好安装VB6,先在VB6里面编写程序,然后再放到WinCC的脚本中,事半功倍,毕竟VB的调试非常方便。
a,插入引用注意选择OLE Automation 和WinCC *****;b,可以直接在VB里面调用WinCC的全部变量,内部,外部全可以:如下:c,在VB里面监视WinCC的变量:d,调试完毕,程序拷贝到WinCC 的脚本中。
2,C语言系统提供了一个应用程序窗口,如下,只要把他拖到画面窗口即可:2,使用Printf函数,把需要调试的内容打印出来;3,效果如下:希望对大家有点用处。
下面内容来自网络,感谢原文作者。
Vbs 操作wincc画面脚本总结一:不使用变量单纯的操作界面1.操作某个画面中控件的属性如Home1.Pdl(总窗体)下的画面窗口2(画面窗口)Sub OnClick(ByVal Item)Dim objCircleDim screennameDim pwnameSet objCircle= ScreenItems("圆1" )objCircle.Radius = 60Set screenname=HMIRuntime.Screens("Home1") //获取要操作的窗体Set pwname=screenname.ScreenItems("画面窗口2") //获取要操作的控件,这里填入你要操作的控件名MsgBox(objCircle.Radius) //输出圆的半径MsgBox (pwname.Picturename) //输出当前画面窗口2的名字End Sub注意当调用某窗体下的某控件的某个属性时,需要声明两个对象,一个接纳这个控件,一个接纳值例如Dim objectDim valueSet object =HMIRuntime.Screens("Home1").ScreenItems("画面窗口2")Set value=object.picturename2.更改画面窗口的对象Sub OnClick(Byval Item)Dim opObjectSet opObject=HMIRuntime.Screens ("Home1").ScreenItems("画面窗口2")opObject.PictureName="Page1.Pdl"End Sub3.设置文本Set titleTxt=HMIRuntime.Screens ("Home1").ScreenItems("静态文本2") titleTxt.Text =titleTxt.Text+"EF" //获取文本的值并追加字符4.vb 字符串函数VB的字符串截取函数有Left(字符串,n),返回字符串前N 个字符;Mid(字符串,p,n),从第p个字符开始,向后截取N个字符;right (字符串,n),返回字符串的最后n个字符。
[妈妈晒]和弟弟抢肉
[妈妈晒]和弟弟抢肉“吃饭了!”随着“大喇叭”奶奶的一声令下,我和弟弟王益铖争先恐后地奔到饭桌前。
一场抢肉大战拉开了序幕……奶奶这几天也不知道怎么回事,特别勤俭节约。
她节约倒不要紧,可苦了我和弟弟这两个“爱肉如命”的“食肉族”。
面对饭桌上那令人垂涎三尺而屈指可数,寥寥无几的几块肉,我和弟弟可费了不少脑筋。
我扒了一口饭,抬头一看,天啊-------弟弟嘴里吃着一块肉,碗里放着两块肉。
我急了,喊起来:“王益铖!你怎么一下子夹那么多的肉呀?”“又没事。
”弟弟小声嘀咕着。
我立刻拿起筷子在盘子里“翻江倒海”。
有一块肉!我和弟弟顿时两眼发光,两双筷子不约而同地向盘子里的那块肉伸去。
由于弟弟离肉比较远,于是那块肉顺理成章地进了我的小肚肚。
我瞅瞅盘子,只剩一块肉了!我以迅雷不及掩耳之势冲向那块肉。
糟糕,弟弟也冲过来了。
噢, NO!两双筷子同时夹住最后那块肉。
我大叫道:“你放手!我先夹到的!”“胡说!我先夹到的,你放手才对!”弟弟争辩着。
我们吵得面红耳赤。
最后,只听“啪”地一声,肉被我们扯断了,我和弟弟各夹一半。
我刚要把肉往嘴里送,弟弟又喊起来:“你那半比我这半大!”我才不理他呢。
吃完饭,我们算了算自己吃了几块肉。
哇,弟弟比我多吃了两块肉!看着弟弟得意扬扬的样子,我怒火中烧,恨不得把他撕成碎片。
这时,奶奶发话了:“哎,看你们那么会抢,我明天多烧点肉。
”“太棒了!”我们欢呼起来。
这么“辛苦”地抢,终于有回报了。
妈妈感言:非常老师,我是42群的浙江迎迎妈,入群很久了,您的书也早早的买来在看,只是没有很好地与女儿分享。
记得4月份时,我发过两篇女儿的作文,但因不知道方法,发错了。
女儿的作文时好时坏,有切身体会的文笔流畅,感受不到的则只言片语。
近阶段,我把您的博文打印下来,给她看。
她看得有滋有味,要求我把她自认为挺好的作文发给您,让您也给点评点评,恳请老师给予指点,谢谢!这是女儿的暑假作文,因我对作文是一窍不通,所以都是她自己独立完成的。
VisualC集成开发环境
VisualC集成开发环境Visual C++是微软公司为开发Windows操作系统应用程序而推出的一种集成开发环境(IDE)。
它为开发者提供了一套完整的工具和功能,使他们能够高效地创建、调试和部署C++应用程序。
下面将详细介绍Visual C++集成开发环境。
Visual C++集成开发环境提供了丰富的功能和工具,使开发者能够在一个统一的界面下完成整个应用程序的开发过程。
它包括代码编辑器、调试器、编译器、资源编辑器等核心工具,以及代码生成器、库管理器、性能分析器等辅助工具。
通过这些工具,开发者可以方便地编写代码、调试程序、管理项目,并且进行性能优化。
首先,Visual C++的代码编辑器提供了丰富的功能,如语法高亮、自动完成、代码折叠等,使开发者能够更加高效地编写代码。
并且,它还支持多种编程语言,如C++、C#、等,可以方便地进行跨语言开发。
另外,它还提供了代码重构功能,可以帮助开发者重构代码、改进程序的结构,提高代码质量。
其次,Visual C++的调试器是其强大的功能之一。
它提供了多种调试工具和选项,如断点、单步执行、变量监视等,使开发者能够方便地调试程序。
并且,它还支持远程调试,可以在远程计算机上进行程序调试,方便开发者在多个环境中进行开发和测试。
此外,Visual C++还具有强大的编译器,可以将C++代码编译为可执行文件,并且支持多种编译选项,如优化、调试信息等。
开发者可以根据项目需求选择不同的编译选项,以获得最佳的代码性能和可调试性能。
Visual C++还包含了丰富的库和工具集,开发者可以方便地使用这些库和工具集来加快开发速度。
其中一些库包括MFC、ATL、STL等,可以帮助开发者快速构建Windows应用程序。
另外,它还提供了一套资源编辑器,使开发者能够方便地编辑和管理程序的资源,如图像、音频等。
除了以上核心功能和工具,Visual C++还提供了一系列辅助工具,如代码生成器、库管理器、性能分析器等,方便开发者进行代码生成、库管理和性能优化。
java、c、c、vc、vc、vb的区别与联系
java、c、c++、vc、vc++、vb的区别和联系java:分三大平台 java se (j2se),java ee(j2ee),java me(j2me) java se是java ee和java me的基础java ee是目前位置企业级开发平台中最牛的java me是用来开发移动嵌入式程序的,例如手机游戏java 的优点是非常适合用于开发大型企业级项目,我们曾为网通公司开发过的上千万级的项目,用的后台程序就是java ee。
java的主要领域还有开源技术,那要学的东西就太多了比如(Spring,Ibatis,DWR,Hibernate,Tapestry等)缺点是要学的技术太多,二是在底层开发中不行C:经久不衰的语言主要应用在嵌入式编程,硬件驱动程序设计中说白了是计算机底层的编程设计优点是可以嵌入汇编,可以直接与硬件打交道,做底层开发缺点是在企业级开发中,几乎无用武之地我朋友是做这个的,在长沙这种小地方,年薪也能达到10万以上与北京的java程序员收入差不多在北京的话,年薪20万不是大问题。
c++ :我非常钦慕的语言,又AT&T的贝尔实验室研发主要开发工具是微软的Visual C++和Borload的BCB(Borload C++ Builder)优点在于含有大量的库,如MFC(Microsoft Foundation Classes),可直接调用windows库函数干很多事情其中的消息处理机制令我感觉尤为经典缺点是,要想精通真不容易主要领域一是做桌面程序,像QQ,迅雷这种桌面软件领域二是做游戏后台开发,大部分游戏(包括魔兽等)后台语言就是使用C++精通的话,收入和C程序员差不多vc :刚说过了,vc全名是(Microsoft Visual C++)是微软研发的一种开发C++的开发工具(IDE)vc++:同vc注意c++是语言,vc++是工具,是一门使用c++语言的工具,记清楚,以后不要问这样肤浅的话。
vb指令集1
Calendar 常数: vbCalGreg vbCalHijriColor 常数: vbBlack vbRed vbGreen vbYellow vbBlue vbMagenta vbCyan vbWhiteComparison常数: VbUseCompareOption VbBinaryCompare VbTextComparevbDatabaseCompareCompiler 常数: Win16 Win32Date 常数: vbUseSystem vbSunday vbMonday vbTuesday vbWednesdayvbThursday vbFriday vbSaturdayfirstdayofyear: vbUseSystem VbUseSystemDayOfWeek VbFirstJan1vbFirstFourDays vbFirstFullWeek返回值: vbSunday vbMonday vbTuesday vbWednesdayvbThursday vbFriday vbSaturday日期格式常数: vbGeneralDate vbLongDate vbShortDate vbLongTimevbShortTimeDir、GetAttr 和 SetAttr 常数: vbNormal vbReadOnly vbHidden vbSystemvbVolume vbDirectory vbArchive驱动器类型常数: Unknown Removable Fixed Remote CDROM RAMDisk文件属性常数: Normal ReadOnly Hidden System Volume DirectoryArchive Alias Compressed文件输入/输出常数: ForReading ForWriting ForAppendingIMEStatus 常数: vbIMEModeNoControl vbIMEModeOn vbIMEModeOffvbIMEModeDisable vbIMEModeHiragana vbIMEModeKatakana vbIMEModeKatakanaHalf vbIMEModeAlphaFull vbIMEModeAlpha Keycode 常数: vbKeyLButton vbKeyRButton vbKeyCancel vbKeyMButtonvbKeyBack vbKeyTab vbKeyClear vbKeyReturn vbKeyShift vbKeyControl vbKeyMenu vbKeyPause vbKeyCapital vbKeyEscape vbKeySpace vbKeyPageUp vbKeyPageDownvbKeyEnd vbKeyHome vbKeyLeft vbKeyUp vbKeyRightvbKeyDown vbKeySelect vbKeyPrint vbKeyExecutevbKeySnapshot vbKeyInsert vbKeyDelete vbKeyHelpvbKeyNumlockvbKeyA vbKeyB vbKeyC vbKeyD vbKeyE vbKeyF vbKeyG vbKeyH vbKeyI vbKeyJ vbKeyK vbKeyL vbKeyM vbKeyNvbKeyO vbKeyP vbKeyQ vbKeyR vbKeyS vbKeyT vbKeyU vbKeyV vbKeyW vbKeyX vbKeyY vbKeyZvbKey0 vbKey1 vbKey2 vbKey3 vbKey4 vbKey5 vbKey6vbKey7 vbKey8 vbKey9vbKeyNumpad0 vbKeyNumpad1 vbKeyNumpad2 vbKeyNumpad3 vbKeyNumpad4 vbKeyNumpad5 vbKeyNumpad6 vbKeyNumpad7 vbKeyNumpad8 vbKeyNumpad9 vbKeyMultiply vbKeyAdd vbKeySeparator vbKeySubtract vbKeyDecimal vbKeyDivide vbKeyF1 vbKeyF2 vbKeyF3 vbKeyF4 vbKeyF5 vbKeyF6vbKeyF7 vbKeyF8 vbKeyF9 vbKeyF10 vbKeyF11 vbKeyF12 vbKeyF13 vbKeyF14 vbKeyF15 vbKeyF16Miscellaneous 常数: vbCrLf vbCr vbLf vbNewLine vbNullCharvbNullString vbObjectError vbTab vbBackvbFormFeed vbVerticalTabMsgBox 常数: vbOKOnly vbOKCancel vbAbortRetryIgnore vbYesNoCancelvbYesNo vbRetryCancel vbCritical vbQuestionvbExclamation vbDefaultButton1 vbDefaultButton2vbDefaultButton3 vbDefaultButton4 vbApplicationModalvbSystemModal vbMsgBoxHelpButton VbMsgBoxSetForeground vbMsgBoxRight vbMsgBoxRtlReadingvbOK vbCancel vbAbort vbRetry vbIgnore vbYes vbNo QueryClose常数: vbFormControlMenu vbFormCode vbAppWindowsvbAppTaskManagerShell 常数: vbHide vbNormalFocus vbMinimizedFocus vbMaximizedFocus vbNormalNoFocus vbMinimizeNoFocus特殊文件夹常数: WindowsFolder SystemFolder TemporaryFolderStrConv 常数: vbUpperCase vbLowerCase vbProperCase vbWide vbNarrow vbKatakana vbHiragana vbUnicode vbFromUnicodeSystem Color 常数: vbScrollBars vbDesktop vbActiveTitleBarvbInactiveTitleBar vbMenuBar vbWindowBackgroundvbWindowFrame vbMenuText vbWindowText vbTitleBarText vbActiveBorder vbInactiveBorder vbApplicationWorkspace vbHighlight vbHighlightText vbButtonFace vbButtonShadow vbGrayText vbButtonText vbInactiveCaptionTextvb3Dhighlight vb3DDKShadow vb3Dlight vbInfoTextvbInfoBackground三态常数: TristateTrue TristateFalse TristateUseDefaultVarType 常数: vbEmpty vbNull vbInteger vbLong vbSingle vbDouble vbCurrency vbDate vbString vbObject vbError vbBoolean vbVariant vbDataObject vbDecimal vbBytevbUserDefinedType vbArrayBoolean 数据类型 Byte 数据类型 Currency 数据类型 Date 数据类型Decimal 数据类型 Double 数据类型 Integer 数据类型 Long 数据类型Object 数据类型 Single 数据类型 String 数据类型用户定义数据类型Variant 数据类型#Const 指令 #If...Then...#Else 指令 Abs(number) Array(arglist) Asc(string) Atn(number) CallByName(object, procedurename, calltype,[arguments()])Choose(index, choice-1[, choice-2, ... [, choice-n]]) Chr(charcode) CommandCos(number) CreateObject(class,[servername]) CurDir[(drive)]CVErr(errornumber) Date DateAdd(interval, number, date)DateDiff(interval, date1, date2[, firstdayofweek[,firstweekofyear]])DatePart(interval,date[,firstdayofweek[,firstweekofyear]])DateSerial(year, month, day) DateValue(date) Day(date)DDB(cost,salvage, life, period[, factor]) Dir[(pathname[, attributes])]DoEvents( ) Environ({envstring| number}) EOF(filenumber) Error[(errornumber)] Exp(number) FileAttr(filenumber, returntype) FileDateTime(pathname)FileLen(pathname) Filter(InputStrings,Value[,Include[,Compare]])Format(expression[, format[, firstdayofweek[, firstweekofyear]]]) FormatCurrency(Expression[,NumDigitsAfterDecimal [,IncludeLeadingDigit[,UseParensForNegativeNumbers [,GroupDigits]]]])FormatDateTime(Date[,NamedFormat])FormatPercent(Expression[,NumDigitsAfterDecimal [,IncludeLeadingDigit[,UseParensForNegativeNumbers [,GroupDigits]]]])FreeFile[(rangenumber)] FV(rate, nper, pmt[, pv[, type]])GetAllSettings(appname,section) GetAttr(pathname)GetObject([pathname] [, class]) GetSetting(appname,section,key[,default])Hex(number) Hour(time) IIf(expr,truepart,falsepart) IMEStatusInput(number, [#]filenumber)InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context]) InStr([start, ]string1, string2[, compare])InstrRev(string1,string2[,start[,compare]])Int(number) Fix(number) IPmt(rate, per, nper, pv[, fv[, type]])IRR(values()[, guess]) IsArray(varname) IsDate(expression)IsEmpty(expression) IsError(expression) IsMissing(argname)IsNull(expression) IsNumeric(expression) IsObject(identifier)Join(list[, delimiter]) LBound(arrayname[, dimension]) LCase(string)Left(string, length) Len(string | varname) Loc(filenumber) LOF(filenumber)Log(number) LTrim(string) RTrim(string) Trim(string)Mid(string, start[, length]) Minute(time)MIRR(values(),finance_rate, reinvest_rate) Month(date)MonthName(month[,abbreviate])MsgBox(prompt[, buttons] [, title] [, helpfile, context])Now NPer(rate, pmt, pv[, fv[, type]]) NPV(rate, values()) Oct(number) Partition(number, start, stop, interval) Pmt(rate, nper, pv[, fv[, type]])PPmt(rate, per, nper, pv[, fv[, type]]) PV(rate, nper, pmt[, fv[, type]]) QBColor(color) Rate(nper, pmt, pv[, fv[, type[, guess]]])Replace(expression,find,replacewith[,start[,count[,compare]]])RGB(red, green, blue) Right(string, length) Rnd[(number)]Round(expression [,numdecimalplaces]) Second(time) Seek(filenumber)Sgn(number) Shell(pathname[,windowstyle]) Sin(number)SLN(cost, salvage, life) Space(number) Spc(n)Split(expression[,delimiter[,count[,compare]]])Sqr(number) Str(number) StrComp(string1, string2[, compare])StrConv(string, conversion, LCID) StrReverse(string1)String(number, character)Switch(expr-1,value-1[,expr-2,value-2 _ [,expr-n,value-n]])SYD(cost, salvage, life, period) Tab[(n)] Tan(number) TimeTimer TimeSerial(hour,minute,second) TimeValue(time)CBool(expression)CByte(expression) CCur(expression)CDate(expression)CDbl(expression)CDec(expression)CInt(expression)CLng(expression)CSng(expression)CStr(expression)CVar(expression)CStr(expression) TypeName(varname) UBound(arrayname[, dimension]) UCase(string)VarType(varname) Weekday(date, [firstdayofweek])WeekdayName(weekday,abbreviate,firstdayofweek) Year(date)数据类型概述: Byte Boolean Integer Long Single Double CurrencyDecimal Date Object String String Variant VariantType导出的数学函数: Secant Cosecant Cotangent Inverse SineInverse Cosine Inverse Secant Inverse CosecantInverse Cotangent Hyperbolic Sine Hyperbolic CosineHyperbolic Tangent Hyperbolic SecantHyperbolic Cosecant Hyperbolic CotangentInverse Hyperbolic Sine Inverse Hyperbolic Cosinenverse Hyperbolic Tangent Inverse Hyperbolic SecantInverse Hyperbolic Cosecant nverse Hyperbolic Cotangent 逻辑运算符: And Eqv Imp Not Or Xor数学函数: Abs Atn Cos Exp Fix Int Log Rnd Sgn Sin Sqr Sqr运算符优先顺序: ^ - (*、/) \Mod (+、-) &= <> < > <= >= LikeNot And Or Xor Eqv Imp Is数组关键字总结: IsArrayArrayOption BaseDim, Private, Public, ReDim, StaticLBound, UboundErase, ReDimCollection 对象关键字总结: IsArrayArrayOption BaseDim, Private, Public, ReDim, StaticLBound, UboundErase, ReDim编译命令关键字总结: #Const#If...Then...#Else控制流关键字总结: GoSub...Return, GoTo, On Error, On...GoSub, On...GoTo DoEvents, End, Exit, StopDo...Loop For...Next, For Each...Next, While...Wend, With Choose, If...Then...Else, Select Case, SwitchCall, Function, Property Get, Property Let, Property Set, Sub 变换关键字总结: Chr Format, LCase, UCase DateSerial, DateValue Hex, Oct Format, StrCBool, CByte, CCur, CDate, CDbl, CDec, CInt, CLng, CSng,CStr, CVar, CVErr, Fix, IntDay, Month, Weekday, YearHour, Minute, Second Asc ValTimeSerial, TimeValue数据类型关键字总结: CBool, CByte, CCur, CDate, CDbl, CDec, CInt, CLng,CSng, CStr, CVar, CVErr, Fix, IntBoolean, Byte, Currency, Date, Double, Integer, Long, Obect, Single,String, Variant (default)IsArray, IsDate, IsEmpty, IsError, IsMissing, IsNull,IsNumeric, IsObject日期与时间关键字总: Date ,Now, Time DateAdd, DateDiff, DatePartDateSerial, DateValue TimeSerial, TimeValueDate, Time Timer目录和文件关键字总结: ChDir ChDrive FileCopy MkDirRmDir Name CurDir FileDateTimeGetAttr FileLen Dir SetAttr错误关键字总结: Clear, Error, Raise Error Err CVErrOn Error, Resume IsError金融关键字总结: DDB, SLN, SYD FV Rate IRR, MIRRNPer IPmt, Pmt, PPmt NPV, PV输入与输出关键字总结: DDB, SLN, SYD FV Rate IRR,MIRR NPer IPmt, Pmt, PPmt NPV, PV 数学关键字总结: Atn, Cos, Sin, Tan Exp, Log, Sqr Randomize, RndAbs Sgn Fix, Int其他关键字总结: DoEvents AppActivate, Shell SendKeysBeep Environ Command MacID, MacScriptCreateObject, GetObject QBColor, RGB运算符关键字总结: DoEvents AppActivate, Shell SendKeysBeep Environ Command MacID, MacScriptCreateObject, GetObject QBColor, RGB注册关键字总结: DoEvents AppActivate, Shell SendKeysBeep Environ Command MacID, MacScriptCreateObject, GetObject QBColor, RGB字符串处理关键字总结: StrComp StrConv Format, LCase, UCaseSpace, String Len Format LSet, RSetInStr, Left, LTrim, Mid, Right, RTrim, TrimOption Compare Asc, Chr变量与常数关键字总结: Let Const, Dim, Private, Public, New, StaticOption Private ModuleIsArray, IsDate, IsEmpty, IsError, IsMissing, IsNull,IsNumeric, IsObject, TypeName, VarTypeMe Option Explicit DeftypeAs: Const 语句 Declare 语句 Dim 语句 Function 语句 Name 语句Open 语句 Private 语句 Property Get 语句 Property Let 语句Property Set 语句 Public 语句 ReDim 语句 Static 语句Sub 语句 Type 语句Binary: Open 语句 Option Compare 语句ByRef: Call 语句 Declare 语句 Function 语句 Property Get 语句Property Let 语句 Property Set 语句 Sub 语句ByVal: Call 语句 Declare 语句 Function 语句 Property Get 语句Property Let 语句 Property Set 语句 Sub 语句Date: Date 数据类型 Date 函数 Date 语句Else: If...Then...Else 语句 Select Case 语句Empty: Empty关键字是用作 Variant 子类型。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
COM组件技术1 COM组件概述 (3)2 COM组件实例 (3)2.1 VC6.0创建的COM组件及调用过程 (3)2.1.1 VC6.0 创建COM组件 (3)2.2.2 使用VB6.0调用 (7)2.2.3 使用VC6.0调用 (9)2.2.4 使用.Net(VB)调用 (11)2.2.5 使用.Net(C#)调用 (13)2.2 .NET(C#)创建的COM组件及调用过程 (15)2.1.1 C# 创建COM组件 (15)2.2.2 使用VB6.0调用 (20)2.2.3 使用VC6.0调用 (22)2.2.4 使用.Net(VB)调用 (23)2.2.5 使用.Net(C#)调用 (25)3 佳衡电力抄表Com组件...................................................... 错误!未定义书签。
1 COM组件概述COM是微软公司为了计算机工业的软件生产更加符合人类的行为方式开发的一种新的软件开发技术。
在COM构架下,人们可以开发出各种各样的功能专一的组件,然后将它们按照需要组合起来,构成复杂的应用系统。
COM组件的优点:①可以将系统中的组件用新的替换掉,以便随时进行系统的升级和定制;②可以在多个应用系统中重复利用同一个组件;③可以方便的将应用系统扩展到网络环境下;④COM组件的特性是与语言无关和与平台无关。
因此,一经开发便可以使用不同的高级语言和开发工具调用。
并且,客源在此COM组件基础进行二次开发。
2 COM组件实例2.1 VC6.0创建的COM组件及调用过程本部分将使用VC6.0创建COM组件。
并介绍如何在VC6.0、VB6.0、、C#中调用该COM组件。
2.1.1 VC6.0 创建COM组件1、在VC中新建“A TL COM AppWizard”工程,工程名称为“VCCOMTest”,并确认。
2、在服务器类型中,选择“动态链接库(DLL)”,完成3、选择菜单栏“插入”“A TL 对象”,选择“Simple Object ”,点击“Next ”4、在上面C++“Short Name”后输入“COMTestInVC”,将会自动填充其余选项。
Attributes 部分按默认设置。
如下图点开VC工程左边的“Class View”,此时会看到系统已经建立“CCOMTestInVC”类和“ICOMTestInVC”接口。
如图5、右击“ICOMTestInVC”接口,选择“Add Method”,添加如下方法方法:LAdd参数:[in] long num1,[in] long num2,[out] long * num36、方法实现。
选择LAdd方法其默认代码为在该方法中添加代码:*num3=num1+num2;7、编译COM组件,VC6.0中会自动注册COM组件。
2.2.2 使用VB6.0调用1、VB6.0中新建“标准EXE”工程,2、在Form1中加入一个CommandButton ,并将其Caption属性设为:调用VC写的COM 组件。
3、在工程,“引用”中选择“VCCOMTest”组件,如下图4、双击CommandButton 按钮,添加如下代码Private Sub Command1_Click()Dim obj As COMTestInVCSet obj = New COMTestInVC '定义一个COMTestInVC对象Dim num1, num2, num3 As Long '定义变量num1 = 1num2 = 2dd num1, num2, num3 '函数调用MsgBox "1+2=" & num3End Sub5、保存工程,并执行,效果,如下图2.2.3 使用VC6.0调用1、新建“Win32 Console Application”空工程,并命名为“myAddComTest”如下图所示2、向工程中添加“MyAddComTest”源文件。
(工程----添加到工程----新建)3、将生成的“VCCOMTest.dll”拷贝到工程目录和程序生成目录中。
添加引用#include <iostream.h>#import "VCCOMTest.dll" no_namespace4、向工程中加入main函数和调用方法。
void main(void){// 声明HRESULT和ICOMTestInVC接口指针HRESULT hr = S_OK;long num1=1;long num2 = 2;long num3;CoInitialize(NULL);//NULL换成0也可以ICOMTestInVCPtr IMyComInVC(__uuidof(COMTestInVC));IMyComInVC->LAdd(num1,num2,&num3);cout << "Method1: The answer for 1 + 2 is: " << num3 << endl;//输出结果cin>>num3;//等待IMyComInVC.Release();IMyComInVC = NULL;CoUninitialize();}5、执行结果如下图所示2.2.4 使用.Net(VB)调用1、创建“Windows 窗体应用程序”工程,命名为“InVBDotNETTestCom”,如下图所示2、选择项目,添加引用,“COM”,并找到“VCCOMTest”,确认,如下图3、向窗体中添加一个“Button”按钮,并将Text设为“调用VC写的COM组件”4、双击“Button”,为其添加代码Dim obj As TestInVCobj = New TestInVC '定义一个COMTestInVC对象Dim num1, num2, num3 As Long'定义变量num1 = 1num2 = 2dd(num1, num2, num3) '函数调用MsgBox("1+2=" & num3)5、运行程序,结果如下所示2.2.5 使用.Net(C#)调用1、创建“Windows 窗体应用程序”,并命名为“InCSharpTestCom”,如下2、选择项目,添加引用,找到“COM”中的“VCCOMTest”,如下图3、在窗体中放入“Button”控件,并设置Text属性为“使用C#调用VC6写的COM组件”4、双击Button按钮,并添加如下代码。
private void button1_Click(object sender, EventArgs e){//定义COM组件COMTestInVC的对象TestInVC comTest = new TestInVC();//定义变量int num1, num2, num3;num1 = 1;num2 = 2;//调用COM组件的方法dd(num1, num2, out num3);//弹出消息MessageBox.Show("1+2=" + num3.ToString());}注意:VC中的long类型,转化到C#中变为int 类型5、运行程序,效果,如下图2.2 .NET(C#)创建的COM组件及调用过程.NET(C#)创建的COM组件在VB6.0和VC6.0中以COM组件形式调用,调用“*.tlb”文件;而在 和C#中应以.NET程序集形式调用,调用时,直接引用“*.dll”文件即可。
2.1.1 C# 创建COM组件1、创建C#类库,名称为CLCOMTestInCSharp,如下图2、在“解决方案资源管理器”(CTRL+W,S)中,类“Class1.cs”更名为“CAdd.cs”,并在弹出的对话框选项中选择“是”。
如下图3、添加接口“IAdd”,并使类“CAdd”继承接口“IAdd”,代码如下namespace CLCOMTestInCSharp{public interface IAdd{///<summary>///加法运算///</summary>///<param name="num1">整数1</param>///<param name="num2">整数2</param>///<returns>返回两数字之和</returns>int Add(int num1, int num2);}public class CAdd:IAdd{///<summary>///构造函数///</summary>public CAdd(){ }///<summary>///加法运算///</summary>///<param name="num1">整数1</param>///<param name="num2">整数2</param>///<returns>返回两数字之和</returns>public int Add(int num1, int num2){return num1 + num2;}}}4、文档最上方添加命名空间“System.Runtime.InteropServices”的引用语句。
using System.Runtime.InteropServices;5、通过菜单“工具”“创建GUID”创建GUID,如下图6、“IAdd”接口上方使用该GUID,如下:[Guid("058B0D56-360E-489c-BF19-567BEBF74C82")]public interface IAdd7、同样的方法在类“CAdd”的上方再生成添加一个GUID [Guid("C6926C48-02CC-44db-8C07-B70F4E11F300")]//类GUID [ClassInterface(ClassInterfaceType.None)]//不为类生成类接口public class CAdd:IAdd8、完整代码如下图9、打开“解决方案资源管理器”,打开“AssemblyInfo.cs”,将[assembly: ComVisible(false)]设为true。
10、右击该类库项目,选择“属性”“生成”,将“为COM互操作注册”选中。