发信人: msnet() 
整理人: jinhu(1999-07-13 10:37:55), 站内信件
 | 
 
 
                      编者的话
 ====================================================================
 大家好!
     欢迎大家回答问题和提出问题,同时也欢迎大家
 提供有关VB、VBA和ASP的好作品。
     近来一段进入汛期,VB邮件没能及时发送,敬请
 各位网友原谅。   
                                 版主   冯德平
                                 [email protected]
 =============================================
                       目  录
 a 处理多个具有相同要求的控件
 b 产生一个GUID 
 c 波形音频设备API的简介
 =============================================
                      VB邮件(7.7)
 a 处理多个具有相同要求的控件
 
     我们往往有时需要处理多个具有相同特性的控件,如:把 100 个 Text 及  Label 的内容加起来。这时,我们可以使用下面的技巧:
 
     1.如果是同一种类型的控件,我们可以使用控件组达到目标。
 
     2.如果不是同一类型控件,控件组就无法使用,这时,我们还可以利用控件 的 Tag 性,我们可以把每个控件设置一个 Tag 标志。在程序中,我们可以用下 面代码来察看是否是我们需要的控件: 
 
         For i=0 To Controls.Count-1 
 
         If Controls(i).Tag = "MyTag" Then ...... 
 
         Next i
 
 
 b 产生一个GUID 
 什么是GUID?GUID是Globally Unique IDentifier的缩写.由一个特殊的算法来产 生这些128位的数,并保证不产生重复的GUID—重复的可能性当然存在,但有太多可 用的数了,因此算法特别防止产生重复的数,这种情况你一生都不会看到. Active X控件都有一个用于相互区别的GUID.你如何在自己的程序中使用GUID呢? 例如,当 一个数据库的每个条目都需要由一个唯一的键值时.下面的代码将给你一个答案:  
 向窗体frmTest中放置一个名为cmdGUID的按钮和一个名为txtGUID的文本框,加入 一下代码:
 Option Explicit
 Private Type GUID
   Data1 As Long 
   Data2 As Long
   Data3 As Long
   Data4(8) As Byte
 End Type
 Private Declare Function CoCreateGuid Lib "ole32.dll" (pguid As GUID)  As Long
 Private Declare Function StringFromGUID2 Lib "ole32.dll"(rguid As Any, ByVal lpstrClsId As Long,ByVal cbMax As Long) As Long 
 
 Private Function GUIDGen() As String
 Dim uGUID As GUID 
 Dim sGUID As String 
 Dim bGUID() As Byte 
 Dim lLen As Long 
 Dim RetVal As Long 
 lLen = 40 
 bGUID = String(lLen, 0) 
 CoCreateGuid uGUID '把结构转换为一个可显示的字符串 
 RetVal = StringFromGUID2(uGUID, VarPtr(bGUID(0)), lLen) 
 sGUID = bGUID
 If (Asc(Mid$(sGUID, RetVal, 1)) = 0) Then RetVal = RetVal - 1 
 GUIDGen = Left$(sGUID, RetVal) 
 End Function 
 
 Private Sub cmdGUID_Click() 
 txtGUID.Text = GUIDGen 
 End Sub 
 
 运行程序.
 每次点击按钮,文本框中都会出现一个不同的数值. 你可能要点上无数年才会看到 一个重复的数值. 
  
 c 波形音频设备API的简介
 
   由于我还没有用下面的API编过程序,只查资料了解了一下,所以不能保证其 完全正确。而且,好象
 一般不会用这些API编程,用mcisendstring()就可以有比较好的效果了。
 
   下面的API针对的是Waveform Audio(波形音频),从字面上就可以看出,下 面的API还分In、Out。
 对了,他们还分别针对输入、输出音频设备。
 
   前面的中文是我自己写的,后面的E文是原文。
 
 辅助设备	Auxiliary Devices
 	auxGetDevCaps		得到一个辅助输出设备的功能信息
 						(如:设备制造商、设备版本、设备的类型等)
 	auxGetNumDevs		得到一个辅助输出设备在系统中的号码
 	auxGetVolume		得到一个辅助输出设备当前的音量
 	auxOutMessage		发一个消息给一个辅助输出设备
 	auxSetVolume		设置一个辅助输出设备的音量
 
 错误		Errors
 	waveInGetErrorText	得到一个输入设备的错误信息
 	waveOutGetErrorText	得到一个输出设备的错误信息
 
 打开、关闭	Opening and Closing
 	waveInClose		关闭一个输入设备
 	waveInOpen		打开一个输入设备
 	waveOutClose		关闭一个输出设备
 	waveOutOpen		打开一个输出设备
 
 音调?		Pitch
 	waveOutGetPitch		得到一个输出设备的音调?
 	waveOutSetPitch		设置一个输出设备的音调?
 			(我对音乐了解的还不够多……这个Pitch嘛……音调指的是什么……)
 
 播放比率?	Playback Rate
 	waveOutGetPlaybackRate	得到一个输出设备的比率?
 	waveOutSetPlaybackRate	设置一个输出设备的比率?
 	(比率?天啊,什么乱七八糟的…………)
 
 播放进展	Playback Progress
 	waveOutBreakLoop	破坏循环?(我也不太清楚,Sorry)
 	waveOutPause		使输出设备暂停
 	waveOutReset		使输出设备停止
 	waveOutRestart		使输出设备从头开始
 
 播放		Playing
 	waveOutPrepareHeader	为播放准备一个数据块
 	waveOutUnprepareHeader	清除数据块
 	waveOutWrite		将准备好的数据块发送到输出设备
 
 质问一个设备	Querying a Device(得到一个设备的功能信息)
 	waveInGetDevCaps	得到一个输入设备的功能信息
 	waveInGetNumDevs	得到一个输入设备在系统中的号码
 	waveOutGetDevCaps	得到一个输出设备的功能信息
 	waveOutGetNumDevs	得到一个输出设备在系统中的号码
 
 录音		Recording
 	waveInAddBuffer		发送一个输入缓冲到输入设备
 	waveInPrepareHeader	为输入设备准备一个缓冲
 	waveInReset		停止向输入设备输入数据,并且将指针恢复到0
 	waveInStart		开始向输入设备输入数据
 	waveInStop		停止向输入设备输入数据
 	waveInUnprepareHeader	清除为输入设备准备的缓冲
 
 得到设备的ID	Retrieving Device Identifier
 	waveInGetID		得到输入设备的ID
 	waveOutGetID		得到输出设备的ID
 
 得到当前的位置	Retrieving the Current Position
 	waveInGetPosition	得到当前输入设备指针的位置
 	waveOutGetPosition	得到当前输出设备指针的位置
 
 发消息给设备	Sending Custom Messages
 	waveInMessage		发一个消息给输入设备
 	waveOutMessage		发一个消息给输出设备
 
 音量		Volume
 	waveOutGetVolume	得到输出设备当前的音量
 	waveOutSetVolume	设置输出设备的音量
 =============================================
                      VB问答
 问题部分:
 您好!
     1.我想 请 问 一 个 rdo连 接 串 的 问 题 :
 服 务 器 名 为 jhserver,在 domain域 ,数据库 在
  "\date\book\date\book.mdb",工 作 机 器 id是 
 tif4r4c1,密 码 无 ,在 class组 ,这 样一 个 rdo
 调 用 ,如 果 用 dsn如 何 写 ,如 果 不 用 dsn,
 用 driver如 何 写 ?他 们 之 间 有何 区 别 ?
     2.如 果 使 用 dsn,则 我 在 自 己 工 作 机 
 器 上 做 的 程 序 ,拿 到 其 它 机 器 上是否能
 正常使用 ,要 不 要 配 置 相 同 的 dsn?有 没 有
  通 用 的 方 法 ,比 如 像 路 径 设 置 里 的
 app.path一 样 ?
          thank you very much
                     致   礼!
                            push
             
    3.用API播放AVI时,怎样把播放窗口的标题栏去掉。 
    4.播放时,怎样实现全屏幕播放,即使原来的AVI尺
 寸比屏幕大或小。希能赐教。 
                                康新龙
 
 回答部分:
 =============================================
                      其  它
 ====================================================================
 欢迎订阅VB免费邮件:
 订阅地址  http://server.com/WebApps/mail-list-subscribe.cgi?id=16852   
 ====================================================================   
 如果您觉得这个邮件列表好的话,请告诉您的朋友。  
 ====================================================================
 欢迎投稿  [email protected]  
 ====================================================================   
 网易上的主页地址:http://www4.netease.com/~aaaaaaaaa 
 本网站主页镜像地址:goodvbhome.yeah.net
 广东视灵通:http://personal.gz168.gnet.gd.cn/vbok/
 ====================================================================
  -- ※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.103.47.196]
  | 
 
 
 |