1. c#使用接口,照抄的别进来!
interface水果
{
string甜嘛();
}
publicclass橙子:水果
{
publicstring甜嘛()
{
return"甜";
}
}
publicclass脐橙:橙子
{
publicnewstring甜嘛()
{
return"很甜";
}
}
classProgram
{
staticvoidMain(string[]args)
{
InterfaceTest.水果一个水果=newInterfaceTest.橙子();
Console.WriteLine(一个水果.甜嘛());
一个水果=newInterfaceTest.脐橙();
Console.WriteLine(一个水果.甜嘛());
Console.WriteLine("---两者都实现了接口,但脐橙的方法并不是重写,实际上都是调用橙子的方法");
InterfaceTest.橙子一个橙子=newInterfaceTest.橙子();
Console.WriteLine(一个橙子.甜嘛());
一个橙子=newInterfaceTest.脐橙();
Console.WriteLine(一个橙子.甜嘛());
Console.WriteLine("---两者都实现了同个名称的方法,但脐橙的方法并不是重写,实际上都是调用橙子的方法");
InterfaceTest.脐橙一个脐橙=newInterfaceTest.脐橙();
Console.WriteLine(一个脐橙.甜嘛());
Console.WriteLine("---这是脐橙的实例,此时调用的才是脐橙实现的方法");
Console.ReadLine();
}
}
2. 在实际接口测试中,接口测试工作的详细开展方式是怎么样的
在实际工作中,接口的展现形式不是固定。但是市场上,最多的还是HTTP协议的接口测试。
基于HTTP协议的接口测试,工作开展方式类似于这样:
项目立项阶段 -> 项目经理、产品经理、测试经理、CEO等人员参与
需求阶段 -> 产品经理根据项目,输出需求规则说明书,产品说明书;然后需求评审
项目排期 -> 项目经理根据产品功能,确定开发、测试、上线计划的时间节点
研发阶段 -> 输出概要设计和详细设计文档,并且各个角色根据文档设计系统架构、数据库、配置文件;并开始编写业务功能的代码
测试阶段 -> 单元测试、集成测试、系统测试、验收测试(接口测试属于集成测试)
发布上线 -> 上线问题验证和维护
测试阶段的细节:
测试工作的开展,与公司对测试流程的管理和把控有很大关系,不同的公司,把控力度都不一样。在标准的测试流程里面,我们需要编写测试用例,但是有的公司甚至测试用例都不用写,对测试质量的控制,停留在“测试人员的责任心和技术水平”上。
如果是一个有前后端的项目,那么接口测试流程是这么开展的:
1. 后端开发人员完成代码编写,输出接口文档
2. 前端开发和后端开发进行前后端联调,打通主干流程;联调结束后,后端开发人员提测接口
3. 接口测试人员,根据后端开发的提测的接口,按照接口文档在【测试环境】进行接口测试。此时前端开发人员在并行开发前端页面
4. 此时,由于项目中,前端开发、后端接口都在同时进行,所以会出现测试和前端开发的进度问题:
前端开发完成、接口测试完成:这是最理想的情况,此时手工功能测试介入测试,接口测试人员进入验收测试。
前端开发完成、接口测试未完成:此时手工功能测试也会介入测试,与接口测试并行测试;(PS:如果功能测试结束了,接口测试依然未完成,那么手工功能和接口一起进入验收测试。)
前端开发未完成、接口测试已完成:手工功能测试无法介入。
5. 【测试环境】的接口测试结束后,接口测试人员需要在【验收环境】进行验收回归测试
6. 【验收环境】执行通过后,接口测试人员,可以把接口自动化脚本,利用持续集成技术,集成到平台中,进行持续的校验。
7. 最后发布上线后,一般接口测试人员不需要介入生产环境的接口测试。但是少数情况下,接口测试人员,也需要在生产环境进行接口测试(不建议)
了解了吗?如果想晋升,或者是学习软件测试的最新知识,欢迎来看黑马程序员视频库内容,有最新的软件测试学习内容哦!
3. API是什么不同的编程语言的API一样的吗说的浅显一点,我是新手
API 我给你打一个比方吧,比如你的键盘它就是人对计算机进行操作时所使用的统一设备,也可以叫做人与系统的一个接口。 程序在设计中,很多要用到内存的控制,设备的控制,电源的控制,以及对其他程序,WINDOWS设置,等等的操作,但是这些操作需要接触到底层的指令,但因为某些时候运行在操作系统之上的程序无法直接操作底层,并且直接操作底层的方式很多样化,这样容易导致处于应用程序与硬件之间的操作系统与硬件之间失去同步,造成操作系统故障。所以Windows将指令集统一成平台中的程序接口,在用户使用接口操作的时候,是由操作系统代理完成,这样就会减少开发难度,增大系统稳定性能。
4. 接口文档该由谁来写
接口文档的话,一般是由文员来写吧,因为普通的厅蔽档文员就是做的这些工作的,所以说你可并启以完全交给他,是没扮乱有问题的
5. C#中的接口的作用和它一般的用法
1、C#接口的作用 :
C#接口是一个让很多初学C#者容易迷糊的东西,用起来好像很简单,定义接口,里面包含方法,但没有方法具体实现的代码,然后在继承该接口的类里面要实现接口的所有方法的代码,但没有真正认识到接口的作用的时候就觉得用接口是多此一举,当然你这样想那是绝对绝对错误的,比尔盖茨的微软请的员工都是比盖茨还聪明的人,他们的C#能添这样的多足吗?!关于接口的作用,网上有一位就真的深入浅出给我们做了很好理解的分析。
我们定义一个接口
public interface IBark
{
void Bark();
}
再定义一个类,继承于IBark,并且必需实现其中的Bark()方法
public class Dog:IBark
{
public Dog()
{}
public void Bark()
{
Consol.write("汪汪");
}
}
然后,声明Dog的一个实例,并调用Bark()方法
Dog 旺财=new Dog();
旺财.Bark();
试想一样,若是想调用Bark()方法,只需要在颤森Dog()中声明这样的一个方法不就行了吗,干什么还要用接口茄枣亩呢.因为接口中并没有Bark()具体实现.真的实现还是要在Dog()中.那么使用接口不是多此一举吗?
还有人是这样说的:从接口的定义方面来说,接口其实就是类和类之间的一种协定,一种约束.还拿上面的例子来说.所有继承了IBark接口的类中必需实现Bark()方法.那么从用户(使用类的用户)的角度来说,如果他知道了某个类是继承于IBark接口,那么他就可以放心大胆的调用Bark()方法,而不用管Bark()方法具体是如何实现的.比如,我们另外写了一个类.
public class Cat:IBark
{
public Cat()
{}
public void Bark()
{
Consol.write("喵喵");
}
}
当用户用到Cat类或是Dog类的时候,知道他们继承于IBark,那么不用管类里的具体实现,而就可以直接调用Bark()方法,因为这两个类中肯定有关于Bark()方法的具体实现.
如果我们从设计的角度来看.一个项目中用若干个类需要去编写,由于这些类比较复杂,工作量比较大,这样每个类就需要占用一个工作人员进行编写.比如A程序员去定Dog类,B程序员去写Cat类.这两个类本来没什么联系的,可是由于用户需要他们都实现一个关于"叫"的方法.这就要对他们进行一种约束.让他们都继承于IBark接口,目的是方便统一管理.另一个是方便调用.当然了,不使用接口一样可以达到目的.只不过这样的话,这种约束岩正就不那么明显,如果这样类还有Duck类等等,比较多的时候难免有人会漏掉这样方法.所以说还是通过接口更可靠一些,约束力更强一些.
2、C#中接口的深入浅出:
通过学习对C#中接口的作用有了更进一步的理解,拿出来跟大家分享一下,有说的不对的地方请大家指教。
假设我们公司有两种程序员:VB程序员,指的是用VB写程序的程序员,用clsVBProgramer这个类表示;Delphi程序员指的是用Delphi写程序的程序员,用clsDelphiProgramer这个类来表示。每个类都有一个WriteCode()方法。定义如下:
class clsVBProgramer()
{
....
WriteCode()
{
//用VB语言写代码;
}
....
}
class clsDelphiProgramer()
{
....
WriteCode()
{
//用Delphi语言写代码;
}
....
}
现在公司来了一个项目,要求派某个程序员写一个程序。
class clsProject()
{
....
WritePrograme(clsVBProgramer programer)//用VB写代码
{
programer.WriteCode();
}
WritePrograme(clsDelphiProgramer programer)//重载方法,用Delphi写代码
{
programer.WriteCode();
}
......
}
在主程序中我们可以这样写:
main()
{
clsProject proj=new clsProject;
//如果需要用VB写代码
clsVBProgramer programer1=new clsVBProgramer;
proj.WritePrograme(programer1);
//如果需要用Delphi写代码
clsDelphiProgramer programer2=new clsDelphiProgramer;
proj.WritePrograme(programer2);
}
但是如果这时公司又来了一个C#程序员,我们怎么改这段程序,使它能够实现用C#写程序的功能呢?我们需要增加一个新类clsCSharpProgramer,同时在此clsProject这个类中要再次重载WritePrograme(clsCSharpProgramer programer)方法。这下麻烦多了。如果还有C程序员,C++程序员,java程序员呢。麻烦大了!
但是如果改用接口,就完全不一样了:
首先声明一个程序员接口:
interface IProgramer()
{
WriteCode();
}
然后声明两个类,并实现IProgramer接口:
class clsVBProgramer():IProgramer
{
....
WriteCode()
{
//用VB语言写代码;
}
....
}
class clsDelphiProgramer():IProgramer
{
....
WriteCode()
{
//用Delphi语言写代码;
}
....
}
对clsProject这个类进行一下修改:
class clsProject()
{
....
WritePrograme(IProgramer programer)
{
programer.WriteCode();//写代码
}
......
}
main()
{
clsProject proj=new clsProject;
IProgramer programer;
//如果需要用VB写代码
programer=new clsVBProgramer;
proj.WritePrograme(programer);
//如果需要用Delphi写代码
programer=new clsDelphiProgramer;
proj.WritePrograme(programer);
}
如果再有C#,C,C++,JAVA这样的程序员添加进来的话,我们只需把它们相关的类加进来,然后在main()中稍做修改就OK了。扩充性特别好!
另外我们如果把clsProject这个类封成一个组件,那么当我们的用户需要要扩充功能的时候,我们只需要在外部做很小的修改就能实现,可以说根本就用不着改动我们已经封好组件!是不是很方便,很强大!
6. 怎样理解编程时常说的“接口”这个名词
硬件中的“接口”概念--------------------------
硬件接口即I/O设备适配器,具体指CPU和主存、外围设备之间通过总线进行连接的逻辑部件。
接口部件在它动态连接的两个部件之间起着“转换器”的作用,以便实现彼此之间的信息传送。
为了使所有的外围设备能够兼容,并能在一起正确地工作,CPU规定了不同的信息传送控制方法。 一个标准接口可能连接一个设备,也可能连接多个设备。
典型的接口通常具有如下功能:
1.控制
接口靠程序的指令信息来控制外围设备的动作,如启动、关闭设备等。
2.缓冲
接口在外围设备和计算机系统其他部件之间用作为一个缓冲器,以补偿各种设备在速度上的差异。
3.状态
接口监视外围设备的工作状态并保存状态信息。状态信息包括数据“准备就绪”、“忙”、“错误”等等,供CPU询问外围设备时进行分析之用。
4.转换
接口可以完成任何要求的数据转换,例如并--串转换或串--并转换,因此数据能在外围设备和CPU之间正确地进行传送。
5.整理
接口可以完成一些特别的功能,例如在需要时可以修改字计数器或当前内存地址寄存器。
6.程序中断
每当外围设备向CPU请求某种动作时,接口即发生一个中断请求信号到CPU。
事实上,一个适配器必有两个接口:
一是和系统总线的接口,CPU和适配器的数据交换一定的是并行方式;
二是和外设的接口,适配器和外设的数据交换可能是并行方式,也可能是串行方式。根据外围设备供求串行数据或并行数据的方式不同,适配器分为串行数据接口和并行数据接口两大类。
编程中的“接口”概念--------------------------
编程中所谓的接口,实际上也是一个类,只是在接口中声明了一组常量和方法,但事实上没有实现任何方法。这有点类似抽象类,接口需要其他类来提供实现自己所定义方法的过程,而不是自己提供。
这里的用接口实现多继承实际上就是可以用类来实现多个接口中的方法。
7. 给讲讲java接口的概念!
希望你仔细阅读。对初学者来说,接口不是很好理解。我教过的学生也都提出过这个问题。
我们来看一个类
class A {
private int a;
public int getA() {
return a;
}
}
这个类的属性是私有的,外界不能访问,而外界可以通过公有方法来访问这个类。我们说一个类的公有方法就是这个类的对外接口。通常
一个类的属性都是私有的,方法大多是公有的。外界只能过个这些公有方法来访问类。这也是Java封装性的体现。如果一个类没有公有属性,
也没有公有方法,这个类就是无法使用的类了。所以我们需要为一个类提供对外接口。
一个类中的方法,不只是说明了它要“做什么”,而且方法的内容也说明了“怎么做”。打个不太恰当的例子,一个杀人方法。从名字上
看,你知道了“做什么”,但没有办法看到“怎么做”。而方法的内容说明了“怎么做”。
class killer {
private String name;
private int age;
private String phone;
private String addr;
......
public void kill(Person p) {
Qiang qiang = new Qiang("ak47");
qiang.fire(p);
}
}
这个类的kill方法内容说明了杀人的过程。如果你不想用这种方式杀人。因为你很BT,你想用毒药杀人。那么这个类的内容就需要改。但
是,还有很多其它的“客户”,需要用不同的方式杀人。怎么办呢?一个很好的办法就是,我们只定义“做什么”,而不定义“怎么做”。
interface Killer {
public void kill(Person p);
}
接口说明了“做什么”,而实现这个接口的类,也就是实现类需要说明“怎么做”。
class Killer1 implements Killer {
public void kill(Person p) {
Qiang qiang = new Qiang("ak47");
qiang.fire(p);
}
}
class Killer2 implements Killer {
public void kill(Person p) {
Bane bane = new Bane();
p.eat(bane);
}
}
public class Test {
public static void main(String[] args) {
Killer jingKe = new Killer1();
Person yingZheng = new Person();
jingKe.kill(yingZheng);
}
}
接口可以把“做什么”和“怎么做”分离开来。这给Java带来了很多好处。虽然代码量增加了,可我们的程序的可维护性加强了。我们的程序是可以拆分的。就象电脑一样,可以拆分成很多组件。我一直在想,如果我的MP3耳机可以拆分就好了,那样在耳机只坏掉一个的时候就不用重新买一个了。
不过上面的例子看不到什么太大的好处。你可能会说,如果你
的目的是为了不修改代码,那么,如果我想使用Killer2来完成任务,还是需要修改main方法为:Killer jingKe = new Killer2();。没有错,
不过你可以通过一个工厂来完成上面的任务。也就是说,不通过new语句来获得Killer对象,而是通过工厂来获得Killer对象。
public class KillerFactory {
public static killer getKiller() {
return new Killer1();
}
public static Killer getKiller(String path) throws Exception {
Properties prop = new Properties();
prop.load(new FileInputStream(path));
String className = prop.getProperty("killer");
Class clazz = Class.forName(className);
return (Killer)clazz.newInstance();
}
}
代码确实增加了很多,可是这对后期的系统维修和系统升级带来了很多好处。
水龙头与出水管的关系,我们需要把水龙头安装到出水管上。如果有一天我们需要更换水龙头时,只需要把老的水龙头拆卸下来,把新的
水龙头安装到出水管上既可。如果水龙头与出水管是一体的,就是无法拆卸的怎么办呢?或是说出水管只能安装水龙头,而不能安装淋浴器,
这就使我们生活很不方便。我们可以理解为出水管的连接方法,连接的对象是“出水设备”,而这个“出水设备”是一个接口。而水龙头与淋
浴器都是这个接口的实现类。但是接口在哪里呢?它长什么样子?我们没看到。它是一个标准,连接处的内径与外径。螺丝抠的密度等。这就
和你的电脑上为什么可以连接USB设备一样。如果电脑和某一个USB设备电焊到一起,那么其它的USB设备就无法使用了。电脑使用的是实现了
USB接口的电子设备,而我们的U盘、MP3、移动硬盘及鼠标都是USB接口的实现类。
用Java写出来的程序也和我们现实生活中的设备一样。如电脑,我们希望电脑的所有部件都可以更换,如果主板上的内存插槽与内存条不
附。我们说,内存条没有实现某某接口。Java是完全面向对象的,而面向对象是我们最为熟悉的东东。面向对象并不简单,而是我们太熟悉它
了。所以我们学习Java会很方便。在现实社会中,所有的标准到了Java中都是接口。一盒香烟多少支烟,烟的长度等都是标准。一个光盘的大
小。Java中的JDBC就是一个标准,而各大数据库厂商及第三方厂商实现了这一标准。JDBC只说明了目的,没有说明怎么完成的目的。
面向对象就在我们眼前,不过我们有时不太注意它。希望你在今后学习Java时,多与现实社会联系。这样可以有利与你的理解。
代码量加大了,但对后期的维护与升级提供了方便。软件公司卖给客户的是class文件,而不是java文件。如果你的客户需要更换Killer对
象,只需修改资源文件既可。
下面我们来看一个定时器类。现在什么都是自动化的,如空调、电视、洗衣机等等。都要用到定时器这个类。对了,还有定时炸弹也要用
它。那我们可不可以只写一个定时器类,应用到所有的需要定时器的设备上呢?答案是肯定的,我们需要这个类。
好了,我们来分析一下定时器需要完成什么工作吧。定时器应该有启动、停止方法。定时器启动之后,每过一定时间就执行某个动作。其
中时间间隔为long型,而要执行的动作可能是输出一个字符串,也可能是打印作业。具体要干什么由使用定时器的用户来完成。而定义定时器
时,根本就不知道要干什么。
public class Timmer {
private long time;
private Action action;
public Timmer() {}
public Timmer(long time, Action action) {
this.time = time;
this.action = action;
}
public void start() {
state = START;
if(th == null) {
th = new Thread() {
public void run() {
while(state == START) {
try {
Thread.sleep(time);
action.action();
} catch(Exception e) {
}
}
}
};
}
th.start();
}
public void stop() {
state = STOP;
}
public void setTime(long time) {
this.time = time;
}
public void setAction(Action action) {
this.action = action;
}
public long getTime() {
return (this.time);
}
public Action getAction() {
return (this.action);
}
}
Action是一个接口,它只有一个方法,就是要完成的任务。我们在定时器启动时调用这个接口的方法。而这个Action接口的对象,代表一
个动作,这个动作就是用户要完成的动作。
public interface Action {
public void action();
}
public static void main(String[] args) {
Timer t = new Timer(2000, new Action() {
public void action() {
System.out.println("Hello World!");
}
});
t.start();
javax.swing.JOptionPane.showMessageDialog(null, "点击确定按钮停止定时器");
t.stop();
System.exit(0);
}
这是一个典型的回调方法例子。在AWT中,java使用了大量的监听器。这些监听器都是回调方法。在XML解析器SAX中,也使用了回调方法来解析XML文档。
接口要比抽象类还要抽象。抽象类需要子类继承,而Java是单继承,所以抽象类被限制了。而接口不同,一个类可以实现多个接口。好比人类与程序员类之间的关系。可以说程序员是人类的子类,如果程序员是一个接口。用人类的子类来实现它就会更好。这个子类还可以去实现会计接口、音乐家接口等等。
在struts2.0、spring、hibernate等框架中,都大量使用接口。我们关心的是某个接口与另一个接口之间的关系。而不关心某个实现类与另一个接口实现类的关系。在客观世界中,我们交谈时都大量使用接口,只是我们没有注意罢了。如:我公司需要一个程序员(一个实现了程序员接口的对象)。上课时,讲师有一台计算机,用白板笔在白板上写字(计算机是接口,白板及白板笔也是接口)。讲师希望学生能学会所有的知识(讲师及学生都是接口)。
就说这么多了,还有什么不明白可以与我联系。QQ:51038648
我在北京中科院计算所培训中心做兼职java讲师。我的经验是,要想学好Java,一定要多打代码、吃透代码。如果不勤奋,就一定学不好。看来你是刚刚开始学习Java,你后面的路还很长,而且不是很好走。
8. 什么是接口接口的作用是什么它与抽象类有什么区别
一 接口表示一个完全抽象类,其成员变量为常量,应该定义为public static final.如果成员变量前没有添加修饰符,系统会默认修饰符为public static final.所有的方法为public abstract抽象方法
接口是一些抽象方法和常量所组成的集合,(1) 接口可以定义多继承.多继承可以通过在extends后面使用多个父接口来实现.(2)接口不存在最高层,与类的最高层为Object类是不同的.接口是用来规范类的,它可以避免类在设计上的不一致 这在多人合作的开发中犹为重要 , 你象一个人,把他封装一个类对象,作为一个接口实现的话,一继承就能实现人的所有的属性和方法,并且重复多次的利用,就不用每次都自己写了,而某个人的某个行为与大多数人不同的话,就可以重写这个方法,要是普通类的话只能调用的不能重写,这就是接口的好处 在商业上说的话,你做一个项目,如果这个项目有专门的一套接口的话,只需要重写这些方法就可以了,所以说真正的JAVA高手都封装到接口,这是我们这些普通的程序员无法做到的,如果能做到把一个项目所有的都封装到接口的话,那你的工资就相当可观了,可能超出你的预测(3)接口中的方法都是使用abstract修饰的方法;(4)接口中的成员变量默认为final定义的常量;
9. Java程序员写接口是怎么回事我也是程序员,可是我只是写增删改查什么的别的基本都是公司封装的功能
跟你平时用的其实差别不多,只是把最终结果以JSON之类的返回了,现在的接口一般是RESTful的居多,你搜索一下 java RESTful 就知道了。
10. 怎么给自己的程序提供接口(API)给别的程序操作
API(Advanced Programmers Interface,高级程序员接口)(注:API实际是指Application Programming Interface,应用程序编程接口;此处疑为原文错误,不过在VB中也可以这么说吧!)是一套用来控制Windows的各个部件(从桌面的外观到位一个新进程分配的内存)的外观和行为的一套预先定义的Windows函数.用户的每个动作都会引发一个或几个函数的运行以Windows告诉发生了什么.
这在某种程度上很象Windows的天然代码.其他的语言只是提供一种能自动而且更容易的访问API的方法.VB在这方面作了很多工作.它完全隐藏了API并且提供了在Windows环境下编程的一种完全不同的方法.
这也就是说,你用VB写出的每行代码都会被VB转换为API函数传递给Windows.例如,Form1.Print...VB 将会以一定的参数(你的代码中提供的,或是默认参数)调用TextOut 这个API函数.
同样,当你点击窗体上的一个按钮时,Windows会发送一个消息给窗体(这对于你来说是隐藏的),VB获取这个调用并经过分析后生成一个特定事件(Button_Click).
API函数包含在Windows系统目录下的动态连接库文件中(如User32.dll,GDI32.dll,Shell32.dll...).
API 声明
正如在"什么是API"中所说,API函数包含在位于系统目录下的DLL文件中.你可以自己输入API函数的声明,但VB提供了一种更简单的方法,即使用API Text Viewer.
要想在你的工程中声明API函数,只需运行API Text Viewer,打开Win32api.txt(或.MDB如果你已经把它转换成了数据库的话,这样可以加快速度.注:微软的这个文件有很多的不足,你可以试一下本站提供下载的api32.txt),选择"声明",找到所需函数,点击"添加(Add)"并"复制(Copy)",然后粘贴(Paste)到你的工程里.使用预定义的常量和类型也是同样的方法.
你将会遇到一些问题:
假设你想在你州碧的窗体模块中声明一个函数.粘贴然后运行,VB会告诉你:编译错误...Declare 语句不允许作为类或对象模块中的 Public 成员...看起来很糟糕,其实你需要做的只是在声明前面添加一个Private(如 Private Declare Function...).--不要忘了,可是这将使该函数只在该窗体模块可用.
在有些情况下,你会得到"不明确的名称"这样的提示,这是因为函数.常量或其他的什么东西共用了一个名称.由于绝大多数的函数(也可能是全部,我没有验证过)都进行了别名化,亦即意味着你可以通过Alias子句使用其它的而不是他们原有的名称,你只需简单地改变一下函数名称而它仍然可以正常运行.
你可以通过查看VB的Declare语句帮助主题来获取有关Alias的详细说明.
消息(Messages)
好了,现在你已经知道什么是API函数了,但你也一定听说过消息(如果你还没有,你很快就会)并且想知道它是什么.消息是Windows告诉你的程序发生了哪些事件或要求执行特定操作的基本方法.例如,当用户点击一个按钮,移动鼠标,或是向文本框中键入文字时,一条消息就会扒迹戚被发送给你的窗体.
所有发送的消息都有四个参数--一个窗口句柄(hwnd),一个消息编号(msg)还有春陵两个32位长度(Long)的参数.
hwnd即要接受消息的一个窗口的句柄,msg即消息的标识符(编号).该标识符是指引发消息的动作类型(如移动鼠标),另外两个参数是该消息的附加参数(例如当鼠标移动时光标的当前位置)
但是,当消息发送给你时你为什么看不到呢--就象有人在偷你的信一样?请先别恼火,让我告诉你.
小偷其实是Visual Basic.但它并没有偷走你的信,而是在阅读了之后挑出重要的以一种好的方式告诉你.这种方式就是你代码中的事件(Event).
这样,当用户在你的窗体上移动鼠标时,Windows会发送一条WM_MOUSEMOVE消息给你的窗口,VB得到这条消息以及它的参数并运行你在事件MouseMove中的代码,同时VB会把这条消息的第二个32位数(它包含了x,y坐标,单位为像素(Pixel),每个位16位)转换为两个单精度数,单位为缇(Twip).
现在,如果你需要光标坐标的像素表示,然而VB已经把它转换成了缇,因此你需要重新把它转换为以像素为单位.在这里,Windows给了你所需要的,但VB"好意地"进行了转换而使你不得不重新转换.你可能会问--我难道不能自己接收消息吗?答案是肯定的,你可以使用一种叫做子类处理(Subclass)的方法.但你除非必须否则最好不要使用,因为这与VB的安全程序设计有一点点的违背.(注:子类处理确实有很大的风险,但如果使用得当,是很有用处的.不过有一点一定要注意,即千万不要使用VB的断点调试功能,这可能会导致VB崩溃!)
需要补充说明的是:你可以发送消息给你自己的窗口或其他的窗口,只需调用SendMessage或PostMessage(SendMessage会使接受到消息的窗口立刻处理消息,而PostMessage是把消息发送到一个称为消息队列的队列中去,等候处理(它将会在该消息处理完后返回,例如有些延迟)).你必须制定接受消息的窗口的句柄,欲发送消息的编号(所有的消息的编号均为常量,你可以通过API Text Viewer查得)以及两个32位的参数。
另一种含义:
1:美国石油协会(API:American Petrolenm Institute):制定机油标准的组织。汽车用发动机机油必须符合API提出的标准。
2:API还有一种含意:空气污染指数。【英文 air pollution index 的缩写】
3:在JAVA中,API除了有应用“程序程序接口”的意思外,还特指JAVA API的说明文档,也称为JAVA帮助文档。
参考资料:http://bk..com/view/16068.htm