📄 试刊5.txt
字号:
<<编程技术>>
一份属于广大编程爱好者的mailing list
试刊第五期 99/03/21
<本期栏目>
*刊首语*
*雕虫小技*
VB小技巧两则
--避免装载多份应用程序
--避免按 [ENTER] 键产生的“嘀”声
*技术文档*
用VFP建立图配乐多媒体演示程序
用Visual Basic 5.0设计E-mail程序
使用DirectX优化声音特性
*服务台*
介绍两个网址
*****************************************************
<刊首语>
大家好,《编程技术》迎来了它正式版本前的最后一期试刊。
我之所以要先试刊几期是因为我从来没有办这类刊物的经验,一切
都是在边摸索、边总结出来的。经过这段时间,我也确实学到了不
少的东西。相信今后我会更加努力的。
另外,为了能为大家更好的服务,我为本刊专门做了个主页,
今后我除了在这个主页中发布本刊的最新消息外,还将加入更多关
于编程方面的内容。我原来的主页,由于连接速度等原因,现在已
经不再更新了,我将把原来主页上的内容进行整理后,放到我新的
主页上去。还望大家能多多光临“寒舍” :
http://yaozheng.soim.com
http://person.zj.cninfo.net/~yao
*****************************************************
*****************************************************
<雕虫小技>
VB小技巧两则
避免装载多份应用程序
你的程序可能只支持单一用户,那么怎么来避免多用户同时使用它吗?
你可以利用 App 对象的 PrevInstance 属性来轻易达到你的目的。
我们可以在程序打开时加入以下代码来验证:
If App.PrevInstance Then
MsgBox ("程序已经运行,不能再次装载。"), vbExclamation
Unload Me
End If
避免按 [ENTER] 键产生的“嘀”声
当你在文本框(Text Box)中输入完信息然后按 [Enter] 键,你就会
听到计算机喇叭发出难听的“嘀”声。
你可以通过以下方法避免此声:
假设文本框为 Text1,在 KeyPress 事件中输入以下代码:
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = Asc(vbCr) Then
KeyAscii = 0
End If
End Sub
当你运行程序后,按 [Enter] 键就再也不会听到那难听的声音了。
*****************************************************
*****************************************************
<技术文档>
用VFP建立图配乐多媒体演示程序
□北京 何东
假设你的硬盘中存有很多精彩的BMP图片和动听的WAV文件,你希望在屏幕上
快速浏览这些图片,并给每张图片配上一段音乐或解说,本文将为你介绍一种简
便有力的方法,那就是用VFP建立数据库来管理这些多媒体数据。
对于图片,VFP新引入了图象控件,要显示一张图片,只需在表单中放入图
像控件IMAGE,再将图片文件的文件名赋给IMAGE的PICTURE属性即可。例如:要
显示C:\BMP\SEA.BMP图片,只需两条语句即可实现:
THISFORM.IMAGE.PICTURE=C:\BMP\SEA.BMP
THISFORM.REFRESH()
对于声音,VFP支持用编程方法播放.WAV文件,例如:要播放C:\WAV\CAR.WAV
文件,只需执行:
SET BELL TO “C:\WAV\CAR.WAV”,WAV
??CHR(7)
但声音的播放一旦开始,就无法中断,只能待它播完才能进行下面的操作,
这就给应用程序带来很多不便。这里介绍一种巧妙地中断声音播放的方法:事先
用WINDOWS的RECORDER录制一个“静音文件”MUTE.WAV,即没有任何声音的声音
文件,停止播放只需执行:
SET BELL TO“MUTE.WAV”,WAV
??CHR(7)
基于VFP对图片显示和声音插放的有力支持,建立图配乐的多媒体演示程序并
不复杂,具体实现如下:
1、建立数据库(在VFP中称为表)MEDIA.DBF,字段名分别为BMPNAME和WAVNAME,
均为字符型字段,用来存放BMP文件的文件名和WAV文件的文件名(包括路径)。
2、建立表单FORM,添加MEDIA.DBF至表单的数据环境。
3、在表单中放入图象控件IMAGE1,将IMAGE1的PICTURE属性设为=MEDIA.BMPNA-
ME.STRETCH属性设为2--变比填充。
4、在表单中放入复选框控件CHECKVOC,用于选择在浏览图片时是否配音,将其
CAPTION属性设为“配音”。
5、在表单中放入命令按钮控件FIRST、NEXT、PRE、ADD、DELETE、EXIT,其CAPTION
属性分别为“第一个”、“下一个”、“前一个”、“增加”、“删除”、“退
出”。
6、程序代码如下:
****FIRST.CLICK代码--显示第一张图片,同时播放它的配音****
GO Top
thisform.imagel.picture=MEDIA.BMPNAME
thisform.Refresh()
IF!Empty(MEDIA.WAVNAME)AND thisform.CHECKVOC.Value=1
SET BELL TO MEDIA.WAVNAME,WAV
??CHR(7)
ENDIF
****NEXT.CLICK代码--显示下一张图片,同时播放它的配音****
IF NOT EOF()
Skip 1
IF EOF()
GO BOTTOM
ENDIF
ENDIF
thisform.imagel.picture=MEDIA.BMPNAME
thisform.Refresh()
IF !Empty(MEDIA.WAVNAME)AND thisform.CHECKVOC.Value=1
SET BELL TO MEDIA.WAVNAME.WAV
??CHR(7)
ENDIF
****PRE.CLICK代码--显示前一张图片,同时播放它的配音****
IF NOT BOF()
Skip -1
IF BOF()
GO Top
ENDIF
ENDIF
thisform.imagel.picture=MEDIA.BMPNAME
thisform.Refresh()
IF!Empty(MEDIA.WAVNAME)AND thisform.CHECKVOC.Value=1
SET BELL TO MEDIA.WAVNAME,WAV
??CHR(7)
ENDIF
****ADD.CLICK代码--增加记录****
**显示GETFILE对话框选定BMP文件,并将文件名存于内存变量AAA中
AAA=GETFILE(“bmp”,“请选定你想入库的文件名”。“确定”)
IF!Empty(AAA)
APPEND BLANK
REPLACE MEDIA.BMPNAME WITH AAA
thisform.imagel.picture=MEDIA.BMPNAME
thisform.Refresh()
****为新增的图片配音****
BBB=GETFILE(“wav”,“请选定你想入库的文件名”,“确定”)
IF!EMPTY(BBB)
REPLACE MEDIA.WAVNAME WITH BBB
ENDIF
ENDIF
****DELETE.CLICK代码--删除记录****
**用WINDOWS的信息框提示是否删除此记录
IF MESSAGEBOX(“是否删除此记录?”,4+32+256)=6
NOW=RECNO()-2
Delete
PACK
**显示被删图片的前一张图片
GO Top
DO CASE
CASE RECCOUNT()=1
thisform.imagel.picture=MEDIA.BMPNAME
thisform.Refresh()
CASE RECCOUNT()=0
thisform.imagel.picture=MEDIA.BMPNAME
thisform.Refresh()
WAIT“数据库已为空”Window
CASE RECCOUNT()〉1
Skip NOW
thisform.imagel.picture=MEDIA.BMPNAME
thisform.Refresh()
ENDCASE
ENDIF
****EXIT.CLICK代码--退出****
set bell to ”MUTE.WAV”,WAV
??chr(7)
thisform.Release
以上所有程序均在中文VFP 3.0及中文Windows 3.2中运行通过。
*****************************************************
用Visual Basic 5.0设计E-mail程序
广东省邮电管理局 张冠军
前言
随着计算机网络的发展,人与人之间信息传输的时间大为缩短。许多文件都是以电
子邮件的形式来传送;通常使用过计算机的人,或多或少都会用到E-Mail来传输信
息。本文将介绍如何用Microsoft MAPI (Messaging Application Program
Interface)来设计Mail程序。首先用Visual Basic所提供的MAPISession control及
MAPIMessage control 来设计Mail收发程序,然后用Microsoft Internet
Explorer 3.0所提供的E-Mail程序来测试程序设计的正确性
MAPI简介
MAPI接口是由微软公司提供的一系列供使用者开发Mail、Scheduling、bulletin
board、communication程序的编程接口。在使用MAPI设计程序时,首先必须在程序
和MAPI之间建立一条或数条Session;当Session建立好之后,Client端程序就可以
使用MAPI所提供的功能。
MAPI的功能主要分成三大部分:Address Books、Transport和Message
Store。Address Books主要负责设置E-mail type、protocol等参数;Transport负
责文件的发送和接收等功能;Message Store则负责发送接收等信息的处理。
说了这么多,MAPI接口好像很可怕。不过没关系,Visual Basic所提供的
MAPISession control及MAPIMessage control,已经将许多复杂的部分包装成简单
的property和功能,我们只需要对property及功能作一些简单的设置,就可以写一
个mail发送和接收的程序。
以下笔者将用Visual Basic的MAPI control,来设计mail传送和接收的程序。
E-mail发送部分
Step 1:设置Exchange各项参数
进入Exchange系统,选择新增设置文件;屏幕上会显示所需要的信息服务,选择
Internet Mail。
将设置文件的名称设为test。屏幕会显示两个选项,您可以选择以modem方式,或以
network 方式连接。笔者所用的是Internet专线,所以选择network;假若您是使
用 PPP拨号方式连接Internet,就要选择modem。
选择network后,Exchange会要求我们输入mail server的IP address。笔者现在所
使用的 Mail server地址是202.96.128.111,在本程序中便将它设置为该地址。
接着将Transform message的模式设置为automatic,这样当我们连接到Mail server
时,新的信息会自动download到local端。
接下来,将您所使用的Email address、full name、password、download path一步
一步设置好,这样就完成了Exchange各项参数的设置。
Step 2:程序设计
在File选项中选择New Project建立一个新的工程,这时屏幕上会看到许多选项,例
如ActiveX Document.EXE、ActiveX Document.DLL、ActiveX.EXE、ActiveX
Control等...,这时要选Standard.EXE。
在Project下,选择Property属性选项;在general选项下,将Project Name改为
email-send, 并将Form名称及Caption更改为email-send 。
在屏幕的Form上加入一个MAPImessage control,取名为MAPIm1;加入一个
MAPIsession control,取名为MAPIs1;加入三个textbox control,取名为
subject、content、addr。并在三个textbox前各加入一个Label,将Caption分别改
为subject、content、addr。
为方便读者了解彼此关系,以下表解释一遍:
(TextBox)
Name
-----------------------------------------------------
subject(输入信件标题)
content(输入信件内容)
addr(输入信件要传送的位址)
(Label)
Caption
-----------------------------------------------
subject(输入信件标题提示)
content(输入信件内容提示)
addr(输入信件要传送的位址提示)
将MAPIm1的各项property设置如下:
download mail=TRUE
logoUI= TRUE
newsession=FALSE
username="test"
这里将download mail设置为TRUE,当程序和mail server第一次连接时,会将新的
mail download到local端。将logoUI设置为TRUE,则当您程序中logon名称输入错误
时,系统会显示一个Message Box来让您输入正确的名称。由于这个程序仅使用到一
条session,我们将它的值设置成FALSE。当然啦!如果您有许多session要建立的
话,也可以将它设置成TRUE。 username中所填的,是我们在Exchange中所新增的设
置文件名称;如果没有填内容的话,系统将会显示一些message box请您输入文件。
在屏幕的Form上加入三个Button control,logon、logoff与send,分别将Caption
改为log on、log off、send。
(Button)
Name Caption
--------------------------------------------------------
logon(执行登入命令) logon
logoff(执行登出命令) logoff
send(执行传出信件命令) send
在 logon_Click()中加入以下程序代码,这个动作是使我们登录到mail server。
MAPIS1.SignOn
MAPIM1.SessionID = MS1.SessionID
MsgBox "your id is" + Str(MS1.SessionID)
MS1.SignOn是作登录的动作。在登录时,因为已经将MAPIm1 control的download
mail属性设置为TRUE,所以可以在屏幕上看到message box显示系统正在download
mail。登录成功后,系统会传回一个sessionID,将该ID填入MAPIM1的SessionID
中,这样就可以利用这条session来传送E-mail。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -