精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● VB和Basic>>〓〓..技术文章连载..〓〓>>VB邮件>>VB免费邮件(5.4)

主题:VB免费邮件(5.4)
发信人: msnet()
整理人: cobe(1999-12-17 11:49:28), 站内信件
a Asp(Active Server Page)的语言特性  

Web源于静态文本,现在很多站点几乎还是采用这种方式。静态文本的缺点就是维

护难(文件数目多)、查询难、修改难。虽然可以采用FrontPage对站点进行管理,

但这只是其中的一个办法。现在,很多的站点都会在后台采用数据库,动态生成

超文本。这样,要改变式样,只需修改几个文件;要变更内容,只需对数据库进

行操作即可,而且易于保持致性;而对于全文检索等查询应用,这种方式的优越

性更为突出。(经常说的“动态” 也包括图片的动态显示,如动态GIF、Java A

pplet等,本文所指为资料的动态性)通用网关界面CGI(Common Gateway Interfa

ce)和网络服务器应用程序界面ISAPI(Internet Server Application Programmi

ng Interface)与其他相关技术的出现,使我们能够方便地与Web Server进行沟通

,从而象一些计数器、留言版等CGI程式相继出现并蔚然成风。但这些CGI程序都

有一个很大的缺点,就是CGI(可用VB、Java、Perl、C或Dephi等编写)与html只能

分开编写、分开运行,要将两者融合在一起并不 容易,从而导致维护与编写都相

当困难。因此,一些厂商后来都推出了自己的Script语言,来增强网页开发的功

能。其中Netscape推出了JavaScript(for client端和for Server端两种);微软

则推出!
了VBScript和Asp(Asp的语法与VB的语法类似)两种,也用于服务器端和客户端程

序的编写。对于专业开发人员而言,客户端程序的最重要的一点是通用性,而服

务器端的则强调功能和效率。对于Client端程序的开发,JavaScript无疑是最佳

的,因为当今两大主流浏览器IE和Netscape都宣称支持该标准;而VBScript则只

有IE才能支持。但令我们苦恼的是对某些JavaScript的标记,IE或IE的某些版本

并不一定会支持,这必导致我们不得不把一部分程序移到服务器端去执行,因为

服务器端的程序会先解释生成html(或含ActiveX)文本,再送到客户端,故不存在

兼容问题。 
   livewire(JavaScript for Server端的编译器)和Asp一样,都是一些手稿语

言(手稿是指类似client端的JavaScript一样的、可嵌套在html文本里面、只需用

标记标明是由服务器执行的程序段),也就是类似C/C++一样的面向对象的语言。

livewire的文件后缀名还是html,asp的文件后缀名则是asp,因为asp的文件在客

户读取它的时候,服务器才进行解释,而livewire的文件则必须预先进行编译(每

次修改后,都要重新编译)。asp有相应的辅助开发工具(InterDev),可代为生成

一些控件。当然,这些并不重要,关键是你采用的是Netscape Web Server还是微

软的IIS。但就一般而言,因为IIS是捆绑在NT上的,故采用IIS的用户会偏多一些

。 

   自从Netscape公司推出了livewire和微软推出了Active Server Page以后,

程序员编写网上程序就方便和容易了很多。但这种Script类的语言有一个共同的

缺点,那就是由于是解释执行的,故速度不会太快。最近,微软建议采用三层模

型,中间层可以不用asp,而直接采用VB6.0生成的ActiveX控件,因为是编译执行

的,故速度较快,不过这是后话。 

   

  1.Asp的基本对象 

   

   Asp(Active Server Page)是一种类似于VB的面向对象的程序语言。在这里

并不想详述对象等一些基本概念,而是直接介绍其语言特性,以便开发人员能够

熟练地对asp程序进行修改和编制(因为很多人都只是直接利用开发工具如InterD

ev来生成asp程序)。 

   首先,Asp程序的存档名称肯定是“asp”;其次,在asp程序里面,服务器

端的Script要放在<%和%>字符串中间,例如<% user=request("user") %>。如果

你想在一个Asp文件中调用另一个Asp文件,则可在Asp中加上下面的声明: 

  < ! -- #INCLUDE VIRTUAL|FILE="***.asp" -- >,这有些象C语言中的#inc

lude。其中,Virtual表示虚拟文件路径,File表示真实文件路径。 

   Asp有五个主要的内建对象:Request、Response、Server、Session、Appli

cation,下面将分别举例对其进行说明。 

   

  1.1 Request 

  Asp依然遵从流行的、利用客户端的Form进行数据交换的方法。Asp内建的re

quest对象拥有五个获取客户端资料的方法(QueryString/Form/Cookies/ServerV

ariables/ClientCertificate)。 

  语法:request.方法名称("参数")|request("参数") 

  如果采用后者,系统会自动选择相应的方法。 

   1.1.1 Form 

   在这里再重新强调Form的一些属性: 

   <Form Action=被调用的程序的url

   Enctype=资料传送的MIME形态

   Method=传送资料的方式Get/Post

   Onrest=按下rest键调用的程序

   Onsubmit=按下sumit键调用程序

   Target=输出内容的frame窗口></Form> 

   使用Form传送信息一般有三种方式:由html网页内的Form传信息给其他Asp

;由Asp内的Form传信息给另外一个Asp;Asp内的信息传送给自身。 

   语法:Request.Form(参数)[(索引)] 

   其中参数表示Form中元素的名称,索引表示相同名称元素的顺序号。 

   例: 

   <%

   For I=1 To Request.Form("user").Count

   Response.Write Request.Form("user")(I)

   Next

   %> 

  可循环读取名称为user的元素,其中Count是Form的系统属性,用于计算同名

元素的个数,如果该元素不存在,则其值为零。如果没有指明要读取第几个同名

元素,则系统会把全部同名元素的值都读取出来,并用“,”作间隔。 

  例:Request.form("user")=abc,bcd,cde 

   

   1.1.2 QueryString 

   语法:Request.QueryString(参数)[(索引)] 

  除了用Form传输资料外,还可通过在超链接后接“?”的方式传输信息,如:

<A href="***.asp?user=abc">,这时可通过Request.QueryString("user")读取

传输的信息;如果出现多个重名的参数,如:<A href="***.asp?user=abc&user=

bcd&user=cde">,则第一次Resquest.QueryString("user")=abc,第二次Resque

st.QueryString("user")=bcd,第三次Resquest.QueryString("user")=cde。 



   

   1.1.3 ServerVariables 

   语法:ServerVariables(参数名称) 

   我们知道Web/Browse的传输协议是http,http的报头会有一些客户端的信息

,如 

  客户IP地址、浏览器的语言系统等。这时可通过Request.ServerVariables(

"***")获 

  取相关信息,如Request.ServerVariables("Accept_Language")可获取客户

端浏览器 

  的语系。其他系统参数见下表: 

   SERVER_NAME server的机器名称或IP地址。 

   SERVER_PORT server正在运行的端口号。 

   REQUEST_METHOD 发出request的方法(GET/POST/HEAD)。 

   SCRIPT_NAME 程序被调用的路径,如:cgi-bin/a.pl。 

   REMOTE_HOST 发出request请求的远端机器(client)的名称。 

   REMOTE_ADDR 发出request请求的远端机器(client)的IP地址。 

   REMOTE_IDENT 发出request的使用者名称(如是拨号上网,则为用户ID), 



   当NCSA IdentityCheck为enabled,而且client机器支持 

   RFC 931时,该变量有效。 

   CONTENT_TYPE 数据的MIME类型,如:“text/html”。 

   HTTP_ACCEPT client可以接受的MIME类型列表。 

   HTTP_USER_AGENT client发出request的浏览器类型。 

   HTTP_REFERER 在读取CGI程序之前,client所指的文本URL。 

   

   1.1.4 Cookies 

  在客户端,Cookies记录了客户端浏览器很多的信息,我们可通过Request.C

ookies("名称")命令获取它的值,也可通过Response.Cookies("名称")="值"在客

户端记录一些信息,以便控制访问者。设置多重Cookies的方法为Response.Cook

ies("名称")("名称")="值"。 

   

   1.1.5 Cache 

   我们可以在浏览器上设置从Cache中抽取已经访问过的页面的信息,同样,

在Asp程序中也可进行类似的设置。其中Response.Clear为清空客户端的内存。R

esponse.Buffer=True设置可从Cache中读取资料(缺省时为False)。 

   

   1.1.6 ClientCertificate 

   ClientCertificate用于获取客户端浏览器的身份确认信息(符合X.509标准

),但 

  客户端浏览器必须支持SSL3.0或PCT1协议。这里需做两步工作,第一步:we

b server必须启动用户端认证选项;第二步:对客户端浏览器进行相应设置,这

样,该方法才会生效,否则,传回empty值。 

   

  1.2 Response 

   当要从服务器传送资料到客户端时,可通过下面的方法: 

   1)Response.Write直接输出信息,如Response.write "<html>"。 

   2)Response.Redirect引导客户端到另一个url位置,如Response.Redirec

t "http://zyr.yeah.net",但这里有一个问题需要注意,就是该语句一定要放在

<html>标记前执行,也就是说在服务器未向客户端送出html文本报头前就要被执

行,否则会出现传输错误信息。 

  3)Response.ContentType控制输出的文件类型,服务器送给客户端的数据包

类型可以是text/html文本,也可以是gif/jpeg图形文件,所以每次传输前,我们

都必须告知客户端将要传输的文件类型,一般默认情况下为“Text/Html”类型。

例如<% Response.ContentType="IMAGE/JPEG" %>。 

  4)Response.Cookies 用于设置Cookies的值,语法为:Response.cookies(

变量名称)[(key)|属性]=写入的信息。(key的用法前面已作说明,这里不在叙述

)cookies系统默认有五个属性,包括Expires(时间)、Domain(域名)、Path

(路径)、Secure(安全性)、Haskeys(判断cookies下是否还有其它cookies文

本)。如:<% Response.Cookies("type").Expires="Sep 9,1998" %>。 

   5)Response.Buffer用于确定是否把信息传输到缓冲区。因为有时候我们希

望把部分中间信息送到缓冲区,然后继续工作。当所有处理工作都完成后,才把

信息输出到客户端。但当在处理过程中Flush或End方法被调用,则缓冲区内容将

被输出。 

   Response的其它属性: 

  Expires:设定网页保留在客户端浏览器的时间长度。 

  ExpiresAbsolute:设定网页保留在客户端浏览器的日期与时间。 

   Response的其它方法: 

  AddHeader:设定HTML文件的HTTP报头。 

  AppendToLog:在Web Server记录档案末尾,添加字串。 

  Clear:清除在缓冲区中的HTML输出资料。 

  End:停止处理asp档案,并回传当时状态。 

  Flush:立刻送出缓冲区的HTML资料。 

   

   1.3 Server 

  Server对象会为你提供一些固定的server端的方法和属性,包括ScriptTime

out、MapPath和URLEncode等。其中ScriptTimeout是server的属性,可规定一个

asp程序执行的最长时间,如:server.scripttimeout=200(计数单位为秒,缺省时

为90秒)。 

  MapPath是server的一个方法,用于把web server的虚拟路径转换为实际路径

。如server.mappath("/")=c:\inetpub\wwwroot,对于路径参数“/”和“\”,

Asp都会视为一样。在这里有一点要注意的是,系统只是对应web server的真实根

目录输出结果,而不会去检查文件系统中是否真的存在这样一个目录。 

   URLEncode是server的另外一个方法,该方法会根据URL编码原则,把源字符

串编 

  码为目标字符串,其中空白的字符用“+”代替。 

   

   1.4 Session 

   Session是asp中一个非常重要的对象,在用一些传统的语言编程时,都会涉

及到变量是定义为全局变量还是局部变量这个问题。但在Internet上的开发却很

少提及这个问题(Java除外),因为每一个html页面都是非相关的,传输完毕后

,全部链接都会断开。在asp中则不一样,我们可以定义一些全局变量,这里的全

局是指在当前浏览器没有被关闭前都可以被使用。这些变量可以在Global.asa中

进行定义。如果你的Web应用程序是用InterDev自动创建的,则会在根目录找到该

文件;如果不是则可自行创建。 

   语法:session.属性|方法 

   一般建立新的session对象都是采用set关键字,如<%set session("变量名

称")=要赋的值。如果赋给session变量的是一个数组,则读取时需存放到数组中

,因为系统是将其视为一个对象(object)。

  

   1.5 Application

   Global.asa是用于定义session、application和object对象的一个文件,客

户端是不能看到该文件的。但该文件一定要放在程序的根目录上,而且文本中不

能有html标记并且文件名不能改动。下面是一个Global.asa文本的范例。

  <SCRIPT LANGUAGE=VBScript RUNAT=Server> 

  Sub Session_OnStart 

   '==Visual InterDev Generated - DataConnection startspan== 

   '--Project Data Connection 

  Session("nnb_ConnectionString") = "DSN=***;UID=zyr;APP=Microsoft (

R) Developer 

   Studio;WSID=ZYR;DATABASE=***" 

  Session("nnb_ConnectionTimeout") = 15 

  Session("nnb_CommandTimeout") = 30 

  Session("nnb_RuntimeUserName") = "zyr" 

  Session("nnb_RuntimePassword") = "******" 

  '==Visual InterDev Generated - DataConnection endspan== 

  End Sub 

  </SCRIPT> 

   Application与session的区别在于,网上的用户都可以使用Application的

对象,因而是需要加锁的;而session只是针对一个客户而已。如定义一个Applic

ation变量为Application("name")="1234"。 

   Asp的功能仅此而已?当然不是,Asp更高级的应用还包括它内建有一些Act

iveX控件和可调用其它的控件等功能,暂不在本文讨论。如果希望获取更多的信

息,可以访问下面的站点: 

   http://www.microsoft.com/asp 

   http://zyr.yeah.net 

   http://www.kj.com.tw 

   

  2.Asp的编程实例 

  为了使大家对上面提到的功能有一个感性的认识,下面我们将以一个非常简

单的用asp编写的chatroom(交谈室)作为例子。为了尽量简化,我们这里只采用

四个文件,一个是主文件main.asp和enter.asp(让用户输入用户名),一个是资料

输入文件input.asp,一个是显示文件show.asp。原理是定义一个application变

量show,然后每次有人说话,我们都把它加到前面;另外显示文件show.asp每三

秒钟刷新一次,用于显示show变量.全部工作仅此而已,用其它语言或方法可能需

要更复杂的工作,在这里则变得非常简单和明了。(这里没有使用Global.asa文件

。) 

   

  2.1 main.asp文件 

  <%

  if session("sname")="" then

   response.redirect "enter.asp"

  end if

  ;如果用户没有输入名字,则将重新回到名字输入界面

  %> 

   

  <html> 

  <frameset rows="80%,20%"> 

   <frame name="show" src="show.asp"> 

   <frame name="input" src="input.asp"> 

   <noframes> 

   <body> 

   <p>This page uses frames, but your browser doesn't support them.<

/p> 

   </body> 

   </noframes> 

  </frameset> 

  </html> 

   

  2.2 enter.asp文件 

  <%

  nickname=request.form("nickname")

  ;读取用户输入的名字

  if nickname="" then

   msg=msg+"请输入您的名称<br>" 

  else 

   response.cookies("whoami")=nickname 

  ;把用户名字写到cookies中 

   application.lock 

   application("show")="<table border=0 bgcolor='ccffcc' width='500'

>" _ 

  &"<td>来至" & request.servervariables("rem

ote_addr") _ 

  & "的" & request.cookies("whoami") & "大驾光临...
</td><

/table>" _ 

  & application("show") 

  ; _是分隔符,与VB一样 

   application.unlock 

   session("sname")=nickname 

   response.redirect "main.asp" 

  end if 

  %> 

  <html> 

  <body> 

  <form method="POST" action="enter.asp"> 

   你的姓名: 

   <input type="text" name="nickname" size="20" maxlength="10"> 

   <input type="submit" value="进入聊天室" name="B1"> 

  </form> 

  </body> 

  </html> 

   

  2.3 show.asp文件 

  <html> 

  <head> 

  <meta http-equiv="refresh" content="3"> 

  ;设置每三秒钟刷新一次 

  <meta name="Microsoft Border" content="none"> 

  <title>聊天的内容</title> 

  </head> 

  <body bgcolor="#FFFFFF"> 

  <%=application("show")%> 

  </body> 

  </html> 

   

   2.4 input.asp文件 

  <%

  mytalk=trim(request.form("txtbox"))

  ;读取用户写的信息,trim用于去掉后面的空格

  application.lock

  application("show")="" & request.cookies("w

hoami") & _ 

   "
:" & mytalk & "<br>" & application("show") 

  ;把新的信息添加到application变量show的前面,其中request.cookies("w

hoami")是从 

  ;cookies中读出该用户的名字。 

  application.unlock 

  %> 

  <html> 

  <head> 

  <meta name="Microsoft Border" content="none"> 

  <base target="input"> 

  <title>输入界面</title> 

  </head> 

   

  <body bgcolor="#FFFFFF"> 

  <form method="POST" action="input.asp" target="input"> 

   <p><%=request.cookies("whoami")%> 

   输入:<input type="text" name="txtbox" size="30"> 

  <input type="submit" value="发送" name="go"> 

  </form> 

  </body> 

  </html> 

伍生灵  推荐

b EXCEL中BASIC程序的运行  

在微软的电子表格软件EXCEL中,附有一个功能很强的编程语言-Visual Basic f

or Applications(本文中简称为VBA)。这实际上是微软的Visual Basic的化身

,微软从Visual Basic中删去了表格设计器(Forms Designer)后,将它附属于

EXCEL,并用对话表取代了表格设计器。另外,微软使VBA能够存取EXCEL的所有命

令和对象(例如单元格、工作表等)。正因为如此,VBA可以控制EXCEL的所有功

能,所以VBA是兼容了BASIC编程语言的命令和语法的EXCEL应用软件的超级宏语言

。 
  在EXCEL和VBA出现之前,许多计算机用户都有一些用BASIC语言编写的应用程

序。当计算机的操作平台升级为Windows,办公软件变成Office后,Windows界面

下的软件直观、易用,使得人们再用那些DOS下BASIC程序时感觉十分别扭。所幸

的是,BASIC和VAB同出于微软公司,使得我们能比较容易地将这些过去的程序转

为EXCEL中的VBA。转化后的程序利用EXCEL的界面输入输出数据,既直观又方便,

有着源程序不可比拟的优点。以下就介绍一下如何完成这个从BASIC到VBA的转换

。 

  在EXCEL里,一段程序称为一个“宏”。记录程序的界面叫“模块表”。要把

BASIC的源程序输入EXCEL,首先要找到模块表。模块表的调入在Office 95中与O

ffice 97略有不同,这里以Office 95中的EXCEL为例进行叙述。在EXCEL中按以下

顺序选菜单:选“插入”,再选“宏表”,再选“模块表”,这时就会出现一张

空白的模块表。 

  在模块表里输入程序,最简单的方法是把源程序直接用键盘输入。如果你的

源程序能够被Office中的WORD或Windows中的书写器、写字板等读出,那么就可利

用“复制”、“粘贴”的功能将源程序贴到模块表里。在许多情况下,WORD读出

来的BASIC源程序往往是一些不可识别的字符,无法直接复制。这里介绍另一种复

制方法:在Windows下选中“MS-DOS方式”,就会打开一个DOS的窗口,在这个窗

口里运行BASIC编程语言(如GWBASIC等)。加载(LOAD)想要转换的源程序,用

BASIC中的LIST命令就会在窗口中看到若干行源程序。将鼠标移到窗口的上部工具

栏里点击“标记”键,窗口的左上角会出现一个光标,在按住SHIFT键的同时用方

向键移动光标到窗口右下角,这时整个窗口都被点亮,再移动鼠标到窗口上部的

工具栏点击“复制”键,再将DOS窗口极小化,打开EXCEL,调出模块表,用EXCE

L里的“粘贴”键就可把DOS窗口里的源程序粘在模块表里,不断地重复这一过程

就可把整个源程序复制到EXCEL里。 

  源程序进入模块表后就可以对其进行重新编辑。因为VBA是兼容了BASIC编程

语言的命令和语法的宏语言,所以BASIC的大部分程序行不用改写就可以直接运行

,要改动的只有以下几个方面: 

  1.给这段程序(宏)起个名字。比如起名为test,则在程序的开头加上Sub

 test()语句,在程序的结尾加上End Sub语句。 

  2.注意变量与数组不要重名。在BASIC中,允许有一个变量A和一个数组A(1

0)同时存在,而VBA中必须把其中一个改为A1或AA。 

  3.输入语句。在BASIC中,数据的输入是用INPUT或READ语句;在VBA中,可

以把要输入的数据放到EXCEL工作表指定的单元格里,然后用对象存储的CELLS方

法去读这些数据。例如在BASIC中: 

  100 READ A,B 

  120 DATA 10,20 

  表示将数值10和20分别赋予变量A和B;在VB中: 

  A = Worksheets ("Sheet1").Cells(1,1) 

  B = Worksheets ("Sheet1").Cells(1,2) 

  表示把EXCEL工作表Sheet1中第一行第一列单元格(A1单元)中的值赋给变量

A;第一行第二列单元格(B1单元)中的值赋给变量B。只要在运行程序前将数值

10和20分别放在A1和B1单元格里,其效果同上面的READ语句是一样的。 

  在程序的运行中,有时需要中间停顿一下,根据前一段运行情况再输入一些

数据,在BASIC中,这种情况一般是用INPUT语句;在VBA中,可采取在输入数据之

前设一个STOP语句的方法,然后在指定的单元格里填入要输入的数据,再让程序

继续运行(在EXCEL菜单中选择“继续运行”即可)。或者,你也可以用InputBo

x( )函数创建一个对话框进行输入。下面就是创建对话框的语句: 

  X1 = "请输入金额" 

  X2 = "输入对话框" 

  X = InputBox(X1,X2) 

  当程序运到这一句时,屏幕上会出现这样一个对话框: 

   

   输入对话框 

   请输金额 确定 

   取消 

   

   

  只要你在框中输入文字,用鼠标点一下“确定”,这时变量X的值就等于你输

入的文字。程序继续运行。值得注意的是,如果你想输入的是数字,则必须用Va

l()函数转换一下,即在上述三句后多加一个语句: 

  X = Val(X) 

  4.输出语句。在BASIC中,程序运行结果的输出一般用的是PRINT或LPRINT语

句,例如: 

  PRINT C 表示将变量C的值显示在屏幕上。 

  LPRINT D 表示将变量D的值输出到打印机。 

  有时还用LPRINT语句打印出各种曲线。 

  在VBA中,可以用对象存储的CELLS方法将变量的值存放在EXCEL的某个工作表

的某单元格上。为了使输出与输入的数据分开,输出的数据可以放在与输入数据

不同的表上,如输入放在Sheet1上,输出就放在Sheet2上。如下例: 

  Worksheets("Sheet2").Cells(2,5)=C 

  Worksheets("Sheet2").Cells(2,6)=D 

  分别表示将C和D 的值放在Sheet1表的第二行第五列(E2单元)和第二行第六

列(F2单元)上。程序运行后,在Sheet2表上就可看到输出的结果。然后利用EX

CEL丰富的图表生成功能将输出的数字结果生成各种图表。得到的效果要比BASIC

打印出的曲线精彩得多。 

  5.自定义函数。在VB中自定义函数的定义比在BASIC中的要复杂一些,它更

像一段子程序,但调用的语句是一样的。例如,把公式Y=Y1×Y2×Y3设为一个名

为Y的自定义函数,在BASIC中应是: 

  DEF Y(Y1,Y2,Y3)=Y1*Y2*Y3* 

  在VB中则写成: 

  Function Y(Y1,Y2,Y3) 

  Y=Y1*Y2*Y3 

  End Function 

  并且这一段函数程序应放在主程序(宏)的前面,即放在Sub test()的前面

。 

  按上述方法改好后,程序即可运行。在EXCEL菜单中,选“工具”,再选“宏

”,这时出现一个对话框,在对话框里的“宏名/引用”框里,用鼠标选中要运行

的宏的名字(如上面的test),然后单击“执行”按钮就可运行了。你也可以设

定一个按钮将程序与按钮关联起来,单击按钮就可以运行程序。关于如何设定按

钮,请参阅有关EXCEL的书籍。如果想要使程序更简短高效,那就需要进一步学习

VBA编程,充分利用VB的各种命令、函数和控制手段进行编程。顺便说一句,QBA

SIC的源程序也同样可以转换,但QBASIC的源程序可以在WORD中直接显示,这样,

复制到EXCEL中就更加方便。 

王世林  推荐

c     一般用鼠标点到右上角的X时,程序就二话不说地退了出来,但有的程序还

会弹出一个确认窗口供确认,这是如何实现的? 即当点到这个X时,程序发生了什

么"事件"?

答:
Option Explicit
Dim VbMsgBoxResult

Private Sub Form_Load()
Form1.Caption = "请您按右上角的X"
End Sub

'利用 Form_QueryUnload 询问是否关闭窗口
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)


Cancel = True
VbMsgBoxResult = MsgBox("真的要关闭吗?", vbOKCancel, "请您回答")
If VbMsgBoxResult = vbOK Then
  Cancel = False
Else
  Cancel = True
End If
End Sub

                湖北荆州(版主供稿)  冯德平
                goodvbhome.yeah.net
================================
欢迎投稿:[email protected]
您有好的文章或你看到了好的文章,请告诉我。
================================
请订阅:
http://server.com/WebApps/mail-list-subscribe.cgi?id=16852


--
网站主页地址:http://home.hn.cninfo.net/home/msnet
网易上的主页地址:http://www4.netease.com/~aaaaaaaaa
本网站主页镜像地址:http://goodvbhome.yeah.net

※ 修改:.msnet 于 May 15 07:38:18 修改本文.[FROM: 202.103.47.190]
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.103.47.190]

[关闭][返回]