2023年7月29日发(作者:)
1.在vb中播放声音 _____________________________________ 1
2.电脑没声音解决办法大全 ______________________________ 2
3添加背景音乐_________________________________________ 2
4如何在VB中插入flv视频? ____________________________ 3
中mediaplayer控件 ________________________________ 6
编程: vb程序怎样控制系统声音 _____________________ 7
7.在VB中用PictureClip控件实现动画 __________________ 11
8.如何在VB中制作不回显的文本框 ______________________ 12
X控件的创建 __________________________________ 14
10.基于GPS定位的嵌入式汽车监控器设计 ________________ 16
6.0中通过MSChart控件调用数据库 _________________ 19
……loop ________________________________________ 21
13.自动关机的代码 ____________________________________ 22
14. 删除指定文件 _____________________________________ 25
15.编写那个一元二次方程求解的代码。 __________________ 27
程序代码解释 ____________________________________ 27
17.弹力球 ____________________________________________ 31
18.用Access创建一个名为“学生”,MDB的数据库 _________ 32
19.请逐句翻译下段VB程序代码 _________________________ 34
6 windows media player控件使用方法 ______________ 36
6中的combo控件如何使用? _______________________ 37
6.0中MSchart控件的使用 _________________________ 39
6.0 使用commondialog控件 提示没安装字体 ________ 40
6.0 MSHFlexGrid控件 _____________________________ 41
!用VB自制媒体播放器 _________________________ 41
Dialog 控件 _________________________________ 43
中插入视频 ______________________________________ 46
1)如何在VB中插入flv视频? _____________________________ 47
1.在vb中播放声音
吧,方法很多比如mci API,媒体播放器控件,MCI控件,directsound组件,都可以
比较简单的是媒体播放器控件和mci控件
提问人的追问 2009-12-11 16:10 你能不能给出代码!具体问题是点击一下窗体发出声音,里面用的soundfile!谢谢回答人的补充 2009-12-11 16:29 Private Declare Function sndPlaySound Lib ""
Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long)
Const SND_SYNC = &H0
Const SND_ASYNC = &H1
Const SND_NODEFAULT = &H2
Const SND_LOOP = &H8
Const SND_NOSTOP = &H10
Const SND_MEMORY = &H4
声明这个api
然后在点击事件中调用sndPlaySound "路径",SND_ASYNC
2.电脑没声音解决办法大全
一、查看任务栏音量图标,是否点击成静音了,音量是否调到最小了。 二、检查发音设备,耳机、音箱,各个接线连接是否正常,插口是否插对。耳机音箱上是否正常工作。是否接通电源! 三、查看耳机音箱上的音量调解开关 是否调到了最小,或者静音。 四、检查windows自带的播放软件 RealPlayer 和 Windows media Player 的音量,,是否都调解成最小,或者静音! 五、检查BIOS声音设置选项。是否设置了声卡禁用! 详情参考
/bios/ BIOS设置图解教程 六、检查声卡驱动是否损坏! 如果声卡驱动还在,但还是没有声音,就只有从新装声卡驱动了! 如果有买电脑的原代的声卡驱动盘,则直接斜载掉,然后重装。 将声卡的驱动光盘放入光驱,右击“声音、视频和游戏控制器”下的?号选项,选“更新驱动程序”,打开“硬件更新向导”,选“是,仅这一次”---“下一步”---“自动安装软件”--“下一步”,系统即自动搜索并安装光盘中的声卡驱动程序,如果该光盘没有适合你用的声卡驱动,再换一张试试,直到完成。 如果没有原带的盘,则参考以下: 展开的“声音、视频和游戏控制器”下的声卡项,查看下声卡的具体的型号,然后把型号在网上搜索一下,下载个驱动,一般去驱动之家/ 。如果没有则可以用万能声卡驱动! 下载保存后,右击“我的电脑”----“属性”---“硬件”----“设备管理器”,打开“声音、视频和游戏控制器”,右击“声音、视频和游戏控制器”下的?号声卡选项,选“更新驱动程序”,打开“硬件更新向导”,去掉“搜索可移动媒体”前的勾,勾选“从列表或指定位置安装”---“下一步”,勾选“在搜索中包括这个位置”,在下拉开列表框中填写要使用的声卡驱动文件夹的路径……---“下一步”,系统即自动搜索并安装你指定位置中的声卡驱动程序。
3添加背景音乐
添加了Mediaplayer控件了,代码是这个
Private Sub WindowsMediaPlayer1_OpenStateChange(ByVal NewState As Long)
= "e:3"
End Sub
我不知道为什么运行之后没有声音,只有定位,静音和音量调节按钮可以按,但是也是什么反应也没有,希望高手指点!
(不是非得把音乐放到VB那个文件夹里吧?我放了效果是一样的)
好评率:33%
'播放
'停止
'暂停
你这样连续让它播放停止暂停,它最后就是停止了,当然没有声音啦
Private Sub WindowsMediaPlayer1_OpenStateChange(ByVal NewState As Long)
= "e:3"
End Sub
就可以了
答案补充
Private Sub Form_Load()
= "e:3"
End Sub
'这样就能自动播放了
4如何在VB中插入flv视频?
答:在VB中插入flv视频,可以按照以下方法来插入视频。
在工具栏右键 部件----找shockwave flash 没有的话就去网上下个adobe flash 就可以了
例子: 假设你假如的控件叫:
Shockwaveflash1
代码可以是:
= +"/"
==================================
++++++++++++++++++++++++
++++++++++属性++++++++++
++++++++++++++++++++++++
语法:AlignMode As Long
说明:对齐方式(与SAlign属性联动).当控件的长宽比例与影片不一致且WMode不为ExactFit时,影片在控件中显示的位置可用该属性调整.
属性值与相应的对齐方式:
1:左对齐
2:右对齐
4:顶对齐
8:底对齐
注意:也可以组合各种对齐方式,就是将这四个基本值组合相加.比如同时左对齐和顶对齐,属性值则设为5.
语法:BackgroundColor As Long
说明:影片的背景色.默认的影片背景色为-1.如果影片设置了底色或有图片当作背景,那么看不出来该属性值的改变会有什么影响 。
注意:颜色值使用RGB格式的颜色值
语法:Base As String
说明:指定用于解决影片中所有相对路径的声明的基地址.当影片与其需要的其他文件不在同一目录中的时候该属性特别有用.如不特别指定,Base的值默认为".",也就是当前影片所在的路径.
语法:BGColor As String
说明:影片的背景色.与BackgroundColor不同的是,BGColor是一个六位的十六进制数,每两位分别代表红绿蓝颜色值.如:FFEEAA表示R值为FF,G值为EE,B值为AA.
语法:DeviceFont As Boolean
说明:决定是否使用影片内嵌的字体,默认值为False.将该属性值设为True则强制播放器不使用影片中内嵌的字体而使用本地系统字体.
语法:EmbedMovie As Boolean
说明:影片是否被存贮到控件所在的容器中.当你已载入一个影片后将该属性设为True,播放影片时就不必再去读取SWF文件了.这样可以使SWF文件镶进程序中,不必再读取文件.但将该属性设为True后,控件的Movie属性就不再接受新的值了.要想播放另一个影片(给Movie属性赋新值),必须先将该属性(EmbedMovie)设为False.
语法:FrameNum As Long
说明:影片当前帧的编号(从0开始计数).设置该属性值将使影片停在由FrameNum指定的帧处.
注意:不仅可以从中获得当前帧,还可以设置当前帧,即跳转到某帧
语法:Loop As Boolean
说明:控制影片是否循环播放.设为True就是循环播放,设为False则只播放一次.
语法:Menu As Boolean
说明:是否显示菜单.设为True显示所有菜单,设为False菜单被屏蔽,但仍有一项"About
Macromedia ",点击后会打开Macromedia的网站.如果你实在不喜欢这个菜单,应该在程序中通过拦截鼠标消息的方法来达到目的.
语法:Movie As String
说明:要播放的影片路径(URL).设置该属性为一个SWF文件的URL,当该属性被设置后,控件将自动载入文件并播放它.
语法:Playing As Boolean
说明:当前播放状态.如果影片正在播放,该属性值为True,否则为False.
语法:Quality As Long
说明:画面质量.
Quality的属性可以取:
0:相当于Quality2取"Low"
1:相当于Quality2取"High"
2:相当于Quality2取"AutoLow"
3:相当于Quality2取"AutoHigh"
语法:Quality2 As String
说明:画面质量
Quality的属性可以取:
Low:偏重于播放速度而不管显示效果,而且不启用消除锯齿功能.
High:偏重于画面而不管播放速度,并且总是启用消除锯齿功能.如果影片中不包含动画就平滑处理位图;如果有动画,那么位图就不被平滑处理.
AutoLow:先着重于播放速度,但只要有可能就改善显示效果.一开始播放时先禁用消除锯齿功能.如果播放器检测到处理器能承受得了,就启用消除锯齿功能.
AutoHigh:一开始是播放速度和显示效果并重,但如有必要就牺牲画质确保速度.开始播放时就启用消除锯齿功能.但如果实际的帧速率比设计时指定的速率慢了,就禁用消除锯齿功能来提高播放速度.
语法:ReadyState As Long
说明:影片的当前状态.
ReadyState的值有:
0:正在载入
1:未初始化
2:已载入
3:正在交互
4:完成例子
注意:可以使用该属性来粗略的判断SWF文件的读取进度,但如果想得到更精确的判断,应该在在SWF文件中使用FScommand()来达到与VB的互动与联系,即传送资料给VB.
语法:SAlign As String
说明:对齐模式.与上文的AlignMode相同,但值的形式不同罢了.
可取值:
L:即左对齐
T:即顶对齐
R:即右对齐
B:即底对齐
注意:当使用组合对齐方法是L,T,R,B的先后顺序不能变,如:左和底的对齐:SAlign="LB"
语法:Scale As String
说明:控制影片的缩放模式.
Scale的值可以取:
ShowAll:在控件内显示全部影片区域,保持影片长宽比例不变,影片的大小决定于控件长或宽中较小的一边.
NoBorder:在控件内显示部分影片区域,保持影片长宽比例不变,影片的大小决定于控件长或宽中较大的一边.
ExactFit:在控件内显示全部影片区域,不考虑影片的长宽比例,强制将影片的长宽等于控件的长宽.
语法:ScaleMode As Long
说明:缩放模式,与Scale相同,只不过属性值为数字而已.
ScaleMode可以取:
0:相当于Scale取"ShowAll"
1:相当于Scale取"NoBorder"
2:相当于Scale取"ExactFit"
语法:TotalFrames As Long
说明:返回影片中总帧数.该参数要到影片载入完成才有效,即ReadyState=4
语法:WMode As String
说明:控件的窗口模式(实现矢量图在VB界面显示的重要属性).
WMode可以取: Window:WMode属性的默认值,按Flash播放器典型的方式工作,即在控件的矩形窗口中播放影片,这样一般都能提供最快的动画效果.
Opaque:使影片不透明.
Transparent:创建一个透明的影片,如果影片中有透明的片段时,就可以看到控件下面的背景.但使用此属性值,动画的播放速度可能会慢一些.
++++++++++++++++++++++++
++++++++++方法++++++++++
++++++++++++++++++++++++
语法:Back()
说明:影片后退一帧,并且停止播放.
语法:Forward()
说明:影片前进一帧并且停止播放例子.
语法:GotoFrame(FrameNum)
说明:将影片跳转到指定的帧,并且停止播放.如果所指定的帧还未载入,在调用过程中会产生无法预料的后果,最好使用PercentLoaded方法来确定是否已载入足够的影片来执行本方法.参数FrameNum是从0开始算的,这和Flash中的Goto动作不一样,Goto是从1开始算的.
语法:LoadMovie(layer As Long, url As String)
说明:将由url指定的影片载入到由layer指定的层上.
语法:Pan(x As Long, y As Long, mode As Long)
说明:将一个放大过的影片平移由x和y指定的距离,x和y均为相对值,即控件相对于影片来说平移的距离.用mode参数来指定x和y的值是像素还是窗口的百分比,当mode=0时坐标系以像素为单位;mode=1时坐标系就以窗口的百分比来计算.平移并不能超出影片的边框,也就是说,往一个方向平移最多到达影片的边缘与控件对齐的程度.
语法:Play()
说明:开始播放影片.
语法:Rewind()
说明: 倒带,返回到影片的第一帧.
语法:SetVariable(name As String, value As String)
说明:将由name指定的Flash变量值设为value(即通过VB传送数据给影片
中mediaplayer控件
是不是由windows系统供给的,像是调用系统内部的mediaplayer播放器?还是VC就自带的?这个是Windows自带的。不是VC自带的,但是VC有那个的接口定义
MediaPlayer组件重要是用于把持MCI(MediaControlInterface)设备,该组件供给了一系列按钮用于把持诸如CD-ROM、MIDI、VCR等多媒体设备,这些多媒体设备可以是硬件也可以是软件。这些按钮在缺省情况下从左到右依次为:Play(播放)、Pause(暂停)、Stop(结束)、Next(下一个曲目)、Prev(前一个曲目)、Step(步进)、Back(后退)、Record(录音)、Eject(弹出媒体)等9个功效按钮。在用户自己开发的程序中,多媒体设备可以有两种方法实现以上9个功效,一种方法是将MediaPlayer组件放在窗体上,在程序运行时单击相应按钮;另一种方法是用与按钮相应的“方法”(Method)来实现这些功效。 以上9个按钮在视图和功效上均容许进行选择,应用者可以通过转变objectinspector(对象监督器)的属性页中的+VisibleButtons和+EnabledButtons属性来实现,应用者只需要双击此属性使其上的“+”变成“-”,然后在下面新呈现子属性表中将相应的子属性的值赋给true/false即可。 MediaPlayer组件有许多的属性(property)和方法(method)。属性是程序设计时在objectinspector(对象监督器)中进行设置的,它无需开发程序的人自行编码(当然也可以在代码中进行属性设置);而方法是程序开发者在程序代码中必须用到的过程和函数等。在正常情况下,Delphi会将常用的属性设置为缺省值,这些值对于一般的开发来说将要足够了,但是有一些要害的属性值却是必须由应用者自己给定的。其中最重要的几个属性及其应用阐明见下表: MediaPlayer组件方法除了前面提到的对应9个按钮的方法外,Delphi还供给了MediaPlayer组件的一些很重要的方法,如open、save、rewind、resume、pauseOnly及close等,它们的应用详情如下: 1.open方法: open方法用于打开一个多媒体设备。在调用该方法之前,必须确保在MediaPlayer组件的DeviceType(设备类型)属性中设定正确的多媒体设备类型。 以下代码用于在程序开端运行时就播放CD音乐。 procedureTForm1.FormCreat(Sender:Tobject); begin with MediaPlayer1 do
begin DeviceType:=dtCDAudio; Visible:=False; open; play; end; end; 2.Save方法: Save方法用于将当前装入的媒体内容保存到由FileName属性指定的文件中。对于不能用媒体存取的设备(如Videodiscs),Save方法被疏忽。 3.Rewind方法: Rewind方法用于设定当前地位到媒体的开端处,也就是用Start属性保存的值的地位。 以下代码用到一个MediaPlayer组件和一个Button组件。当单击Button按钮时,WavAudio媒体返回开端处并进行播放。 procedureTForm1.FormClick(Sender:Tobject); begin
MediaPlayer1.DeviceType:=dtWavAudio; MediaPlayer1.fileName:='c:windowschimes.wav'; Button1.Caption:='返回并开端播放'; Button1.width:=125;
end; procedureTForm1.Button1Click(Sender:Tobject); begin MediaPlayer1.Rewind;
MediaPlayer1.play; end; 4.Resume方法: Resume方法用于重新开端播放或录制当前被暂停的多媒体设备。 5.Close方法: Close方法用于关闭当前已打开的多媒体设备。
6.PauseOnly方法: PauseOnly方法仅仅用于暂停多媒体设备,如果该设备将要暂停,则当PauseOnly方法被调用时,设备仍旧保持暂停状态。 以上就是MediaPlayer组件最常用的属性和方法。如果您爱好的话,在您的利用程序中就可以应用这些属性和方法实现多媒体的音频和视频后果。
编程: vb程序怎样控制系统声音
用MCI命令,只能对MCI设备起作用。如果有外部设备(比如Windows Media Player和Wimamp播放器)在播放,MCI命令对他们不起任何作用。必须使用混音器调节系统声音,对所有设备都起作用。请看调节系统音量的类:/(里面有很多关于音量设置的函数,其中有 一个静音设置的函数),放在类代码里,生成ActiveX DLL,然后在VB工程菜单中引用该DLL即可。
静音函数 Public Function SetMute(ByVal bMute As Boolean) As Boolean 麻烦了点。。。如果实在找不到你就把它的全篇copy再调用这个函数好了。
2楼 回复主题:vb程序怎样控制系统声音 'set volume & set mute or not mute 'author:海龙'mail:******************'qq:281131020'msn:*********************'website:'date:2006-03-28 Option Explicit Private Declare Function mixerGetNumDevs Lib
"" () As Long Private Declare Function GlobalLock Lib "kernel32" (ByVal
hMem As Long) As Long Private Declare Function mixerClose Lib "" (ByVal
hmx As Long) As Long Private Declare Function GlobalFree Lib "kernel32" (ByVal hMem
As Long) As Long Private Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem
As Long) As Long Private Declare Function GlobalAlloc Lib "kernel32" (ByVal wFlags
As Long, ByVal dwBytes As Long) As Long Private Declare Sub CopyPtrFromStruct Lib
"kernel32" Alias "RtlMoveMemory" (ByVal ptr As Long, struct As Any, ByVal cb As Long)
Private Declare Sub CopyStructFromPtr Lib "kernel32" Alias "RtlMoveMemory" (struct
As Any, ByVal ptr As Long, ByVal cb As Long) Private Declare Function
mixerSetControlDetails Lib "" (ByVal hmxobj As Long, pmxcd As
MIXERCONTROLDETAILS, ByVal fdwDetails As Long) As Long Private Declare Function
mixerGetLineInfo Lib "" Alias "mixerGetLineInfoA" (ByVal hmxobj As Long,
pmxl As MIXERLINE, ByVal fdwInfo As Long) As Long Private Declare Function
mixerGetDevCaps Lib "" Alias "mixerGetDevCapsA" (ByVal uMxId As Long,
pmxcaps As MIXERCAPS, ByVal cbmxcaps As Long) As Long Private Declare Function
mixerOpen Lib "" (phmx As Long, ByVal uMxId As Long, ByVal dwCallback As
Long, ByVal dwInstance As Long, ByVal fdwOpen As Long) As Long Private Declare
Function mixerGetLineControls Lib "" Alias "mixerGetLineControlsA" (ByVal
hmxobj As Long, pmxlc As MIXERLINECONTROLS, ByVal fdwControls As Long) As Long
Private Declare Function mixerGetControlDetails Lib "" Alias
"mixerGetControlDetailsA" (ByVal hmxobj As Long, pmxcd As MIXERCONTROLDETAILS,
ByVal fdwDetails As Long) As Long Private Const MAXPNAMElen = 32 ' max product name
length (including NULL) Private Const MMSYSERR_NOERROR = 0 ' no error Private Const
GMEM_ZEROINIT = &H40 Private Const CALLBACK_WINDOW = &H10000 ' dwCallback is a HWND
Private Const MIXER_OBJECTF_MIXER = &H0& Private Const MIXER_LONG_NAME_CHARS = 64
Private Const MIXER_SHORT_NAME_CHARS = 16 Private Const MIXER_GETLINEINFOF_SOURCE
= &H1& Private Const MIXER_OBJECTF_HANDLE = &H80000000 Private Const
MIXER_SETCONTROLDETAILSF_VALUE = &H0& Private Const
MIXER_GETCONTROLDETAILSF_VALUE = &H0& Private Const MIXERCONTROL_CT_UNITS_BOOLEAN
= &H10000 Private Const MIXER_GETLINECONTROLSF_ONEBYTYPE = &H2& Private Const
MIXER_GETLINEINFOF_COMPONENTTYPE = &H3& Private Const MIXERCONTROL_CT_CLASS_FADER
= &H50000000 Private Const MIXERCONTROL_CT_UNITS_UNSIGNED = &H30000 Private Const
MIXERCONTROL_CT_SC_SWITCH_BOOLEAN = &H0& Private Const
MIXERLINE_COMPONENTTYPE_DST_FIRST = &H0& Private Const
MIXERCONTROL_CT_CLASS_SWITCH = &H20000000 Private Const MIXER_OBJECTF_HMIXER =
(MIXER_OBJECTF_HANDLE Or MIXER_OBJECTF_MIXER) Private Const
MIXERCONTROL_CONTROLTYPE_FADER = (MIXERCONTROL_CT_CLASS_FADER Or
MIXERCONTROL_CT_UNITS_UNSIGNED) Private Const MIXERCONTROL_CONTROLTYPE_VOLUME =
(MIXERCONTROL_CONTROLTYPE_FADER + 1) Private Const
MIXERCONTROL_CONTROLTYPE_BOOLEAN = (MIXERCONTROL_CT_CLASS_SWITCH Or
MIXERCONTROL_CT_SC_SWITCH_BOOLEAN Or MIXERCONTROL_CT_UNITS_BOOLEAN) Private Const MIXERCONTROL_CONTROLTYPE_MUTE = (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 2) Private
Const MIXERLINE_COMPONENTTYPE_DST_SPEAKERS = (MIXERLINE_COMPONENTTYPE_DST_FIRST +
4) Private Type MIXERCONTROLDETAILS_SIGNED lValue As Long End Type Private Type
MIXERCONTROLDETAILS_BOOLEAN fValue As Long End Type
''''''''''''''''''''''''''''''''''''''''''''''' '自己定义的类型 Private Type
MIXERCONTROLDETAILS_SIGNED_ARRAY_2 v1 As MIXERCONTROLDETAILS_SIGNED v2 As
MIXERCONTROLDETAILS_SIGNED End Type
''''''''''''''''''''''''''''''''''''''''''''''' Private Type MIXERCONTROLDETAILS
cbStruct As Long ' size in Byte of MIXERCONTROLDETAILS dwControlID As Long ' control
id to get/set details on cChannels As Long ' number of channels in paDetails array
item As Long ' hwndOwner or cMultipleItems cbDetails As Long ' size of _one_
details_XX struct paDetails As Long ' pointer to array of details_XX structs End
Type Private Type MIXERCAPS wMid As Integer ' manufacturer id wPid As Integer '
product id vDriverVersion As Long ' version of the driver szPname As String *
MAXPNAMElen ' product name fdwSupport As Long ' misc. support bits cDestinations
As Long ' count of destinations End Type Private Type Target ' for use in MIXERLINE
and others (embedded structure) dwType As Long ' MIXERLINE_TARGETTYPE_xxxx
dwDeviceID As Long ' target device ID of device type wMid As Integer ' of target
device wPid As Integer ' " vDriverVersion As Long ' " szPname As String * MAXPNAMElen
End Type Private Type MIXERCONTROL cbStruct As Long ' size in Byte of MIXERCONTROL
dwControlID As Long ' unique control id for mixer device dwControlType As Long '
MIXERCONTROL_CONTROLTYPE_xxx fdwControl As Long ' MIXERCONTROL_CONTROLF_xxx
cMultipleItems As Long ' if MIXERCONTROL_CONTROLF_MULTIPLE set szShortName As
String * MIXER_SHORT_NAME_CHARS szName As String * MIXER_LONG_NAME_CHARS Bounds(1
To 6) As Long ' Longest member of the Bounds union Metrics(1 To 6) As Long ' Longest
member of the Metrics union End Type Private Type MIXERLINECONTROLS cbStruct As Long
' size in Byte of MIXERLINECONTROLS dwLineID As Long ' line id (from
ID) ' MIXER_GETLINECONTROLSF_ONEBYID or dwControl As Long '
MIXER_GETLINECONTROLSF_ONEBYTYPE cControls As Long ' count of controls pmxctrl
points to cbmxctrl As Long ' size in Byte of _one_ MIXERCONTROL pamxctrl As Long
' pointer to first MIXERCONTROL array End Type Private Type MIXERLINE cbStruct As
Long ' size of MIXERLINE structure dwDestination As Long ' zero based destination
index dwSource As Long ' zero based source index (if source) dwLineID As Long ' unique
line id for mixer device fdwLine As Long ' state/information about line dwUser As
Long ' driver specific information dwComponentType As Long ' component type line
connects to cChannels As Long ' number of channels line supports cConnections As
Long ' number of connections (possible) cControls As Long ' number of controls at
this line szShortName As String * MIXER_SHORT_NAME_CHARS szName As String *
MIXER_LONG_NAME_CHARS tTarget As Target End Type '最大最小音量 Private m_lMax As
Long, m_lMin As Long '打开的设备句柄 Private m_hMixer As Long '设备数GetDevNum
Private m_lDeviceNum As Long '设备ID Private m_lDeviceID As Long '设备功能GetDevCaps Private m_Caps As MIXERCAPS '打开设备以调节音量 Public Function
OpenDeviceForVolume() As Boolean OpenDeviceForVolume = False '系统中混频器的总数量 If (mixerGetNumDevs() < > 0) Then '打开设备 If mixerOpen(m_hMixer, 0, 0, 0, MIXER_OBJECTF_MIXER Or CALLBACK_WINDOW) < > MMSYSERR_NOERROR Then Exit Function End
If '获取设备能力 If mixerGetDevCaps(m_hMixer, m_Caps, Len(m_Caps)) < >
MMSYSERR_NOERROR Then Exit Function End If End If '如果打开失败 If m_hMixer = 0 Then
Exit Function Dim mxl As MIXERLINE Dim mxc As MIXERCONTROL Dim mxlc As
MIXERLINECONTROLS Dim hMem As Long hMem = GlobalAlloc(GMEM_ZEROINIT, Len(mxc))
ct = Len(mxl) onentType =
MIXERLINE_COMPONENTTYPE_DST_SPEAKERS If mixerGetLineInfo(m_hMixer, mxl,
MIXER_OBJECTF_HMIXER Or MIXER_GETLINEINFOF_COMPONENTTYPE) < > MMSYSERR_NOERROR
Then Exit Function End If m_lDeviceNum = els ct = Len(mxlc)
ID = ID rol = MIXERCONTROL_CONTROLTYPE_VOLUME
ols = 1 rl = Len(mxc) rl = GlobalLock(hMem) If
mixerGetLineControls(m_hMixer, mxlc, MIXER_OBJECTF_HMIXER Or
MIXER_GETLINECONTROLSF_ONEBYTYPE) < > MMSYSERR_NOERROR Then GlobalUnlock hMem
GlobalFree hMem Exit Function End If CopyStructFromPtr mxc, rl, Len(mxc)
m_lDeviceID = rolID m_lMin = (1) m_lMax = (2)
GlobalUnlock hMem GlobalFree hMem OpenDeviceForVolume = True End Function '打开设备以设置静音 Public Function OpenDeviceForMute() As Boolean OpenDeviceForMute =
False '不懂 If (mixerGetNumDevs() < > 0) Then '打开设备 If mixerOpen(m_hMixer, 0,
0, 0, MIXER_OBJECTF_MIXER Or CALLBACK_WINDOW) < > MMSYSERR_NOERROR Then Exit
Function End If '获取设备能力 If mixerGetDevCaps(m_hMixer, m_Caps, Len(m_Caps)) < >
MMSYSERR_NOERROR Then Exit Function End If End If '如果打开失败 If m_hMixer = 0 Then
Exit Function Dim mxl As MIXERLINE Dim mxc As MIXERCONTROL Dim mxlc As
MIXERLINECONTROLS Dim hMem As Long hMem = GlobalAlloc(GMEM_ZEROINIT, Len(mxc))
ct = Len(mxl) onentType =
MIXERLINE_COMPONENTTYPE_DST_SPEAKERS If mixerGetLineInfo(m_hMixer, mxl,
MIXER_OBJECTF_HMIXER Or MIXER_GETLINEINFOF_COMPONENTTYPE) < > MMSYSERR_NOERROR
Then Exit Function End If m_lDeviceNum = els ct = Len(mxlc)
ID = ID rol = MIXERCONTROL_CONTROLTYPE_MUTE
ols = 1 rl = Len(mxc) rl = GlobalLock(hMem) If
mixerGetLineControls(m_hMixer, mxlc, MIXER_OBJECTF_HMIXER Or
MIXER_GETLINECONTROLSF_ONEBYTYPE) < > MMSYSERR_NOERROR Then GlobalUnlock hMem
GlobalFree hMem Exit Function End If CopyStructFromPtr mxc, rl, Len(mxc)
m_lDeviceID = rolID GlobalUnlock hMem GlobalFree hMem OpenDeviceForMute
= True End Function '关闭打开的设备 Public Function CloseDevice() As Boolean
CloseDevice = False If m_hMixer < > 0 Then mixerClose m_hMixer m_hMixer = 0 End If
CloseDevice = True End Function '设置音量 Public Function SetVolume(ByVal lVol As
Long, ByVal rVol As Long) As Boolean SetVolume = False '如果设备未打开 If m_hMixer
= 0 Then Exit Function Dim mxcdVolume As MIXERCONTROLDETAILS_SIGNED_ARRAY_2 Dim mxcd
As MIXERCONTROLDETAILS Dim hMem As Long hMem = GlobalAlloc(GMEM_ZEROINIT,
Len(mxcdVolume)) = lVol = rVol
ct = Len(mxcd) rolID = m_lDeviceID els =
m_lDeviceNum = 0 ils = Len(mxcdVolume.v1) ils =
GlobalLock(hMem) CopyPtrFromStruct ils, mxcdVolume, Len(mxcdVolume) If
mixerSetControlDetails(m_hMixer, mxcd, MIXER_OBJECTF_HMIXER Or MIXER_SETCONTROLDETAILSF_VALUE) < > MMSYSERR_NOERROR Then GlobalUnlock (hMem)
GlobalFree (hMem) Exit Function End If GlobalUnlock (hMem) GlobalFree (hMem)
SetVolume = True End Function '获取当前音量 Public Function GetVolume(ByRef lVol
As Long, ByRef rVol As Long) As Boolean GetVolume = False lVol = -1 rVol = -1 '如果设备未打开 If m_hMixer = 0 Then Exit Function Dim mxcdVolume As
MIXERCONTROLDETAILS_SIGNED_ARRAY_2 Dim mxcd As MIXERCONTROLDETAILS Dim hMem As Long
hMem = GlobalAlloc(GMEM_ZEROINIT, Len(mxcdVolume)) ct = Len(mxcd)
rolID = m_lDeviceID els = m_lDeviceNum = 0
ils = Len(mxcdVolume.v1) ils = GlobalLock(hMem) If
mixerGetControlDetails(m_hMixer, mxcd, MIXER_OBJECTF_HMIXER Or
MIXER_GETCONTROLDETAILSF_VALUE) < > MMSYSERR_NOERROR Then GlobalUnlock (hMem)
GlobalFree (hMem) Exit Function End If CopyStructFromPtr mxcdVolume, ils,
Len(mxcdVolume) lVol = If m_lDeviceNum = 2 Then rVol =
End If GlobalUnlock (hMem) GlobalFree (hMem) GetVolume = True
End Function '获取当前是否静音状态 Public Function GetMute(ByRef bMute As Boolean)
As Boolean GetMute = False If m_hMixer = 0 Then Exit Function Dim mxcdMute As
MIXERCONTROLDETAILS_BOOLEAN Dim mxcd As MIXERCONTROLDETAILS ct =
Len(mxcd) rolID = m_lDeviceID els = 1 = 0
ils = Len(mxcdMute) ils = VarPtr(mxcdMute) If
mixerGetControlDetails(m_hMixer, mxcd, MIXER_OBJECTF_HMIXER Or
MIXER_GETCONTROLDETAILSF_VALUE) < > MMSYSERR_NOERROR Then Exit Function End If If
< > 0 Then bMute = True Else bMute = False End If GetMute = True
End Function '设置静音 '参数为是否静音. Public Function SetMute(ByVal bMute As
Boolean) As Boolean SetMute = False If m_hMixer = 0 Then Exit Function Dim hMem As
Long Dim mxcdMute As MIXERCONTROLDETAILS_BOOLEAN Dim mxcd As MIXERCONTROLDETAILS
= IIf(bMute, 1, 0) hMem = GlobalAlloc(GMEM_ZEROINIT,
Len()) ct = Len(mxcd) rolID = m_lDeviceID
els = 1 = 0 ils = Len(mxcdMute) ils =
GlobalLock(hMem) CopyPtrFromStruct ils, mxcdMute, Len(mxcdMute) If
mixerSetControlDetails(m_hMixer, mxcd, MIXER_OBJECTF_HMIXER Or
MIXER_SETCONTROLDETAILSF_VALUE) < > MMSYSERR_NOERROR Then GlobalUnlock hMem
GlobalFree hMem Exit Function End If GlobalUnlock hMem GlobalFree hMem SetMute =
True End Function '获取最大音量 Public Function GetMaxVolume() As Long GetMaxVolume
= IIf(m_hMixer = 0, -1, m_lMax) End Function '获取最小音量 Public Function
GetMinVolume() As Long GetMinVolume = IIf(m_hMixer = 0, -1, m_lMin) End Function
Private Sub Class_Initialize() m_hMixer = 0 m_lMax = -1 m_lMin = -1 End Sub
7.在VB中用PictureClip控件实现动画
2007-8-10 作者: 编辑:眼镜丢了 点击进入论坛 VB的功能强大,比如用PictureClip等控件组合就可以轻松实现动画。
PictureClip控件本身并不能显示图像,它是依靠与picture控件或IMAGE控件的组合来完成动画的。PictureClip控件就像是一个图片仓库,所不同的是仓库中的图片只有一张。PictureClip控件将此图片平均分成若干区域,程序运行时PictureClip控件将指定的区域赋值给一个显示控件的有关属性,如picture控件的picture属性。 下面我们以VB50为例,具体的来介绍使用PictureClip控件实现动画。
首先,我们应该确定工具箱中有PictureClip控件,如果没有,我们应通过工程菜单的“部件”来添加PictureClip控件。
有了PictureClip控件后,在窗体上添加PictureClip控件。按F4键显示属性窗口,双击“自定义”属性则出现一个“属性页”对话窗口。选取“图片”项,单击“浏览”选定一个图片。一般情况下此图片应是若干个大小相同的小图片组成。我们以VB例程中的REDTOPBMP为例,选取一个图片后我们在“预览”框中就可以看见图片全貌。我们发现REDTOPBMP图片由三行六列共18个小图片组成,选择“通用属性”项,根据我们的上述发现,定义好“行”、“列”的值,划分好图形区域。
此时我们在窗体上就可以看见REDTOP图片。在运行时PictureClip控件是不可见的,所以不需要理会PictureClip控件的位置。
在以后的过程中,我们可以将一图形显示控件,调整大小,放在窗体中指定的位置,将PictureClip控件中指定区域,赋值给显示控件的picture属性,便可以显示图形了,设PictureClip控件区域值为一变量,在定时控件中,用循环语句改变此变量,就可以实现动画了。例程如下:
Dim a As Integer ′在模块说明中定义a变量
Private Sub Form_Load()
′指定picture1的图形为PictureClip控件中的第二个图形区域
e=cCell(1)
′定义变量a的初始值和定时控件的时间间隔属性
a=1
al=100
End Sub
Private Sub Timer1_Timer()
′每发生一次Timer事件时改变变量a的值
a=a+1:If a=18 Then a=0
′利用变量值的改变给picture1控件指定不同的图形
e=cCell(a)
End Sub
怎么样,如此简单就可以实现动画!如法炮制,我们可以实现立体图形按钮等效果。
以上是我在自学VB的过程中学会的一个小技巧,希望它能起到一个抛砖引玉的作用。
8.如何在VB中制作不回显的文本框
2007-8-10 作者: 编辑:眼镜丢了 点击进入论坛
在应用程序中,有时需要用户录入一些不宜在屏幕上直接显示的内容,如用户口令或机密数据。我们已熟知,在Foxbase/Foxpro中这一功能可以用SETCONSOLEOFF命令关闭向屏幕的回显来实现。那么,在VisualBasicforWin-dows中如何做到这一点呢? 一个容易想到的方法是利用文本框的Key-Press事件,但为了处理用户对文字的编辑(如删除、插入),则还要再用其它变量存放真正输入的内容,而且必须书写大量复杂的控制程序。实践证明,这种方法比较繁琐,不便使用。
笔者在用VB编程时发现,Windows文本框可以响应许多消息,那么,可不可以利用WindowsAPI函数sendmessage将控制特性的消息传递给文本框呢?如果可行,则可以将使目标以密码形式输出的消息传递给文本框,不就可以制作出不回显文字的文本框了吗?
答案是肯定的。笔者使用以上思路实现了这一功能。以下是程序中用到的几个API函数和有关的消息:
getfocus():返回获得输入焦点的目标句柄;
getwindowlong():取得指定目标的信息,第二个参数为GWL_STYLE时将返回目标的“风格”属性;
setwindowlong():把新的属性值赋予指定的目标。该函数的三个参数分别为目标的句柄、属性类型、新属性值;
sendmessage():向目标发送一条消息。该函数的四个参数分别为接收消息的目标句柄、消息、消息参数一、消息参数二;
GWL_STYLE(程序中简写为STYLE):其值为-16,表示目标的“风格”;
ES_PASSWORD(程序中简写为PASS)简写为PASS):其值为&H20,表示目标具有录入口令的属性,即在录入时不回显;
EM_SETPASSWORDCHAR(程序中简写为PASSCHAR):其值为&H41C,表示传递密码特性。用sendmessage向目标传递此消息成功,则目标会将自身的输出信息以指定的密码形式给出。
以下程序,通过sendmessage函数修改文本框Text1的“风格”属性,使其以指定的密码形式输出———不管用户录入的是什么内容,都以相同数量的“*”来显示。用户可以通过单点“Command1”按钮来显示的真正内容。
DeclareFunctiongetfocusLib“user”()AsInteger
DeclareFunctiongetwindowlongLib“user”(ByVal handAsInteger,ByVal
indexAsInte-ger)AsLong
DeclareFunctionsetwindowlongLib“user”(ByVal handAsInteger,ByVal indexAsInte-ger,ByVal newflagAsLong)AsLong
DeclareFunctionsendmessageLib“user”(ByVal handAsInteger,ByVal msg As Integer,ByVal wparaAsInteger,ByVallparaAsLong)AsLong
ConstSTYLE=-16
ConstPASS=&H20
ConstPASSCHAR=&H41C
SubCommand1_Click()
EndSub
SubCommand2_Click()
End EndSub
SubForm_Load()
Show
us
hand%=getfocus()
flag&=getwindowlong(hand%,STYLE)OrPASS
flag&=setwindowlong(hand%,STYLE,flag&)
flag&=sendmessage(hand%,PASS-CHAR,Asc(“*”),0&)
X控件的创建
2007-8-10 作者: 编辑:眼镜丢了 点击进入论坛
1)概述
ActiveX是一个Microsoft的术语,它指的是一组包括控件,DLL和ActiveX文档的组件,它通常是以动态链接库的形式存在,因此必须在一个叫容器的独立执行软件中运行。这样的容器包括Authorware、Delphi,Visual Basic,Visual C++,Internet Explorer和Access等等。
ActiveX控件数据输入和函数功能执行都必须通过容器,因此ActiveX控件和容器都必须支持一些特定的接口协议。根据Microsoft 相应的规格标准,ActiveX控件应具备如下的性能机制。
属性和方法:ActiveX控件必须提供属性的名称、方法的名称及参数,通过这项机制容器可以存取和改变ActiveX控件的属性参数。
事件:ActiveX控件由这项机制通知容器在ActiveX控件中发生的事件,比如属性参数的改变,用户按下鼠标左键等。
存储:容器由这项机制通知ActiveX控件存储和提取有关信息数据等。
ActiveX控件只要在Windows的Registry数据库中注册后,就可以像其他Windows应用程序一样发挥各自的功能。
ActiveX控件是一个模块化的灵活对象,如果某个应用程序或网页需要增加一项特殊的功能,无须重写整个程序,只要灵活地插入一个具有此项功能的ActiveX控件即可实现。ActiveX的优势还在于它的动态可交互性,用户可以动态地在使用过程中,通过改变它的属性和参数,在应用程序中实现自己的特殊要求。
也许有的读者会问:目前在市面上可以找到各种各样现成的ActiveX控件,还有没有必要自己创建ActiveX控件呢?关于这个问题很容易解释,现有的控件种类是很多,功能也比较齐全,问题是有许多时候会遇到这种情况:使用现成的控件虽能完成任务,但自己需要的一些特性(属性、事件或方法)该控件却没有提供,还需要自己手工写代码来实现,而这些特
性偏偏在自己的应用系统中又经常会用到,为了避免大量的重复劳动,一劳永逸的办法就是在创建自己的ActiveX控件。
目前可以使用Visual Basic或其它开发工具创建 ActiveX控件。无论按照哪种标准,Visual Basic都是计算机历史上最为成功的(同时也是最流行的)编程语言,其中最令人兴奋的特性就是可以创建用户自己的控件并可以像其他控件一样应用于支持 ActiveX控件技术的应用程序中。下面通过一个具体实例来阐述如何在Visual Basic 6.0(中文企业版)下进行
ActiveX控件创建。
2)创建ActiveX控件的步骤
使用Visual Basic编程语言编写过应用程序的用户,一定非常熟悉诸如TextBox、Label和Data等控件。要利用这些控件,可以将它们绘制在窗体中,通过属性,方法和事件控制它们的行为。当用户创建自己的ActiveX控件时,除了确定属性、方法和事件以外,用户是在创建一个相似的对象。当创建了自己的ActiveX控件以后,就可以在其他Visual
Basic 工程中使
用它,就像使用TextBox控件一样。可以在能使用ActiveX控件的任何应用程序或开发工具(包括其他Visual Basic工程、Authorware或者Microsoft Internet Explorer)中使用自己的控件。
在Visual Basic中创建一个ActiveX控件不同于创建一个Standard EXE
应用程序。因此当创建一个新控件时,一般应遵循的步骤是:
(1)确定控件将要提供的功能。因为ActiveX控件类似于一个独立的对象,所以需要明确这个对象的目的,希望它在屏幕上有什么样的外观?使用此控件时,需要什么属性、方法以及事件用于应用程序中?
(2)设计控件的外观。
(3)设计控件的接口,即属性、事件和方法。
(4)创建由控件工程和测试工程组成的工程组。
(5)通过把控件和或代码添加到 UserControl 对象中来实现控件的外观。
(6)实现控件的接口和功能。
(7)编译控件部件(.ocx 文件)。
下面按照上述步骤建立一个可直接显示数据库内容的DataListView控件。
3)具体实现方法
(1)确定DataListView控件的功能
标准的ListView控件在显示数据库记录时还存在一些不足,如必须编写大量的代码等,DataListView通过在ListView的基础上添加部分功能而弥补了ListView的不足,因此它除了本身固有的属性、方法和事件外,添加了如下成员:
◆ DataServerName属性 -- 确定所操作的数据库服务器。
◆ DataBaseName属性 -- 确定所操作的数据库。
◆ AdministratorName属性 -- 确定操作数据库的管理员名称。
◆ PasswordName属性 -- 确定操作数据库的管理员口令。
◆ ShowDataBase方法 -- 显示Select命令所执行的数据库操作结果。
◆ErrorDataBase事件 -- 当遇到错误的数据库操作时引发该事件。
(2)设计控件的外观 DataListView由于仅包含一个ListView控件,所以其外观没有太多需要考虑的问题。如果要创建的控件是多个控件构成,或新控件不包括任何现存控件即完全从头开始创建一个全新的控件的话,则外观问题是一个很重要的问题。
(3)设计控件的接口,即属性、事件和方法
对ListView控件所作的改进是为了让ListView控件支持数据库的内容显示,以便在所有能支持ActiveX控件的应用程序中使用。通过添加用户自己的属性DataServername、DataBaseName、AdministratorName、PasseordName和方法ShowDataBase等可以实现这项功能。DataListView的其他属性、事件和方法都和标准ListView一样。
10.基于GPS定位的嵌入式汽车监控器设计
2009-2-19 作者: 编辑:齐瑞瑞 点击进入论坛
关键词:GPS 嵌入式
随着人们生活水平的提高,汽车逐渐进入了普通家庭,中国各大城市的汽车保有量逐年增加。同时,汽车被盗、被抢也成为一个较为严重的社会问题。虽然各类汽车防盗/报警器在汽车上的应用在一定程度上解决了汽车的安全问题,但随着盗贼手段的提高,大多的报警器容易迅速被破坏。汽车报警的方式多为灯光闪烁和喇叭鸣响,车主不一定能得到报警,周边的居民却被严重干扰。此外,盗贼破坏报警器,盗走汽车后,外观稍加改动,汽车就如石沉大海,无法追踪了。为了解决这些问题,本设计利用GPS监控的方式跟踪汽车位置,在被盗情况下可利用GSM短信模块随时向车主或公安部门发送汽车的GPS定位,加快破案速度。
图1 系统功能图
系统功能
本监控器不同于普通的汽车防盗器,并不提供被盗时声光报警和汽车电路切断等功能。它相当于一个具有报警功能的跟踪器,利用GPS定位来判断汽车是否被盗。在确定汽车被盗后,可利用GSM短信将汽车的位置信息随时发送给警方。这种监控器是一般汽车防盗器的补充,它不易被发现,短期内无法拆除,而且定位精度较高(10m左右)。
整个监控器的系统功能如图1所示。监控器安装在汽车的隐蔽处,平时利用汽车电瓶供电,在汽车电源被切断后,可自动改用电池独立供电,GPS接收天线位于汽车外部,有利于更好的接收信号。整个监控器工作的基本方式为,在汽车正常行驶的时候,监控器处于节电的休眠状态。当汽车停止,车主离开时,车主可利用手机发送短信给监控器,命令其处于监控状态。这时监控器的GPS接收功能开启,定时接收GPS定位卫星发送的位置、速度和高度等信息,同时将静止位置标志为安全位置。当窃贼破坏汽车的通用防盗系统,驾驶汽车离开时,GPS接收到的位置坐标发生变化,当速度、位置偏差大于设定的报警值时。监控器将自动发送报警信息到车主的手机,提示汽车被移动,可能被盗。当车主报警后,为配合警方查找被盗的汽车,车主可再次发送命令给监控器,打开定时短信发送功能,将当前的汽车坐标定时地发送到车主或报警中心,配合电子地图可以非常方便的查找到当前的汽车位置,可迅速破案。系统附带的SD卡可在报警后长时间的存储汽车变化的坐标等信息,作为破案的证据和查找窃贼同伙的线索。
系统硬件设计
为了实现监控功能,要求监控器具有GPS接收、GSM短信发送和大量数据存储功能,并有一定的多任务处理能力,成本低,体积小。监控器的硬件结构如图2所示。
图2 监控器硬件结构图
一款合适的主芯片将在系统中起到重要的作用,本监控器中选用了FS7821LQ嵌入式芯片。FS7821LQ集成了RISC结构的8051内核、USB 2.0控制器、收发器、NAND闪存、SD以及CF接口控制器。利用这款芯片组成的嵌入式系统外接电路简单、功能强大、价格低廉,非常符合本设计的要求。
监控器的短信功能主要完成车主短信命令的接收和汽车GPS位置数据的发送,系统选用成熟的GSM-RTU短信模块完成。该模块内嵌GSM模块、16位低功耗MSP430单片机控制管理,具有遥测遥控的核心单元、1个可配置的标准串口(RS-232C)、标准天线和SIM卡接口。将购买的手机SIM卡插入短信模块,并完成系统(包括服务电话号码)设置后,将短信模块的串口和监控器的串口1(外加电平转换芯片,使之符合RS-232C电平标准)连接,就完成了短信模块的硬件安装。
GPS模块主要完成汽车GPS数据的接收,系统选用MG-30U/R-GPS模块,采用SiRF第二代高效能芯片(具有12条通道,最多时可收到12颗GPS卫星信号)进行比较解算,可选用速度、位置、海拔等相关数据,价格低廉,精度较高。该模块输出可选用RS-232C接口,利用系统主控芯片FS7821LQ的串口2和GPS模块连接。因为传输的数据量不大,利用串口传输数据可避免使用USB接口必须在系统上建立主USB口的麻烦。
图3为系统硬件的电路设计图,FS7821LQ具有完整的SD卡驱动及接口,系统直接利用128Mb的SD卡可与其连接。利用FS7821LQ芯片的通用I/O口PORT2_0~PORT2_3形成两个串口,加MAX232电平转换芯片后,分别连接GPS和GSM模块。FS7821LQ芯片包括了一个从USB接口的功能和硬件驱动,系统中预留为USB 2.0的接口,作为产品升级使用。此外,系统还预留了FS7821LQ的10个通用I/O口作为后续报警功能的控制端口。
图3 系统硬件电路设计图
系统软件设计
由于本监控器包括了多种较复杂的功能,同时具有如短信收发等突发的功能和GPS接收等定时任务,为了更好的完成任务的执行,在组成的嵌入式系统中,移植了礐/OS-II操作系统。礐/OS-II作为一个免费的源码开放的实时嵌入式操作系统,提供了多任务的切换能力和中断、UART的驱动等功能,完全可以满足本操作平台的要求。
礐/OS-II作为一个最基本的任务调度内核,只具备任务切换的能力,本监控器根据其功能可分为如表1所示的4个任务:主任务优先级最高(10);短信收发任务优先级次高(12),主要包括接收短信功能(包括设置、开关监控器)、发送短信功能(报警时5s发送一次GPS坐标),这个任务的时间随机性较大,实时要求较高;GPS接收任务每5s接收一次GPS数据,并解析其坐标,判断是否报警;数据存储任务在报警后每60s存储一次GPS坐标(128Mb卡约可保存1个月的数据)。
因为监控器中使用了USB设备和SD卡,在具备硬件接口的同时必须在软件中提供USB和SD的驱动程序。FS7821LQ芯片的开发套件中提供了USB驱动程序和SD/MMC卡的驱动程序, 包括支持标准MMC卡命令;嵌入5B命令存储器;嵌入17B响应存储器 ;支持1/4/8位数据宽度;对卡支持20MHz的时钟频率。为了将GPS数据以文件的形式保存到SD卡,必须有一个和PC兼容的文件系统,本监控器将简化的FAT16文件系统移植成功,实现了文件的自由存取。
在移植了礐/OS-II并嵌入了USB和SD/MMC卡的驱动程序后,监控器的应用层次的软件安装系统的功能分为优先级不同的多个任务。其中主任务用于生成其他任务,其优先级最高(10);GPS接收任务负责控制MG-30U/R-GPS模块,并从中获取所需要的GPS数据,其优先级次高(12);短信收发接收任务完成接收车主短信和发送GPS数据的功能,其优先级再次之(14);最后,数据存储功能完成GPS在SD卡中的存储和系统设置的功能其优先级为16。程序中同时建立了消息队列用于完成各任务间的通信和数据交换,软件状态流图如图4所示。
图4 软件状态流图
发展与前瞻
这个嵌入式汽车监控器的设计采用了大量成熟的技术和模块。它的应用主要是在汽车被盗时发出警告和被盗后提供准确的汽车位置信息,不能取代传统的汽车防盗器,但能提供非常实用的防盗功能,为被盗车的查找提供快速准确的信息。随着技术的发展,GPS/GSM中的控制器和主控制器的整合必将成为发展的方向,这样必然能够进一步的降低成本,减小体积。同时该监控器也可以和通用的汽车防盗器相整合,发展为更加完善的系统。
6.0中通过MSChart控件调用数据库
2007-8-10 作者: 编辑:眼镜丢了 点击进入论坛 VB6.0中的MSChart控件是一个功能强大的高级图表工具,拥有丰富的图表绘制功能,可显示二维和三维的棒图、区域图、线形图、饼图等多种常用图表。近日我为了在双击图表的某个区域时将与该区域相对应的数据库的内容在DataGrid控件上显示出来,遇到了许多困难,最后用一个自定义的变量SelectSeries解决了问题,具体方法如下:
设数据库名称为“学生信息”,有一Access表“学生成绩”,其内容为一个班学生的考试成绩,包括学号、姓名、成绩3个字段,成绩字段格式是字符型,值为“优”、“良”、“中”、“差”中的一个。
窗体Form1包括一个MSChart控件McScore,类型为二维饼图,用于显示每种成绩的学生数;一个ADO控件AdScore用于连接数据库;一个DataGrid控件DgScore用于以表格形式显示数据库内容。
工作过程为:双击饼图的某个区域,则DgScore显示相应成绩的学生名单。
代码如下:
Option Explicit
Dim SelectedSeries as Integer ′自定义变量
Dim Rs() as String ′提取记录集用的字符串数组
Private Sub Form_Load()
′设定DataGrid控件的数据源
urce=″AdScore″
′设定ADO控件的连接字串和初始的记录源,即显示内容
tString=″Provider=.3.51;Persist_Security
Info=False;Data Source=学生信息″
Source=″selet * from学生成绩order by成绩″
h
′预设好提取记录用的SQL语句
Rs(1)=″select* from学生成绩where成绩=″+Chr(34)+″优″+_Chr(34)+″order by成绩″
Rs(2)=″select *from学生成绩where成绩=″+Chr(34)+″良″+_Chr(34)+″order
by成绩″
Rs(3)=″select * from学生成绩where成绩=″+Chr(34)+″中″+_Chr(34)+″order
by成绩″
Rs(4)=″select * from学生成绩where成绩=″+Chr(34)+″差″_Chr(34)+″order
by成绩″
End Sub
Private Sub McScore_SeriesSelected(Series as Integer,MouseFlags as
_Integer,Cancel as Integer)
SelectedSeries=Series
End Sub
Private Sub McScore_PointSelected(Series as Integer,DataPoint
as_Integer,MouseFlags as
Integer,Cancel as Integer)
SelectedSeries=Series
End Sub
Private Sub McScore_Db1Click()
′改变ADO控件的记录源并刷新
Source=Rs(SeletedSeries)
h
……loop
Private Sub Form_Click()
Dim i As Integer, n As Integer, fact As Integer, flag As Boolean
n = InputBox("请输入一个正整数")
flag = True
fact = 2
Do
Do While n Mod fact = 0
If flag Then
Print n; "="; fact;
Else
Print "*"; fact;
End If
n = n / fact
flag = False
Loop
fact = fact + 1
Loop Until fact > n
End Sub
详细点啊 谢谢 我 看不懂 谢谢了
谢谢 我有点不懂
Do While n Mod fact = 0 是不是表示余数不为0 都要循环下去
If flag Then 这句什么意思啊
谢谢了 不好意思了 刚刚学
匿名 回答:1 人气:1 解决时间:2011-03-04 20:56
好评率:0%
这个程序是求一个数的最小因子
form_click() 这个是点击窗体时触发的事件
Dim i As Integer, n As Integer, fact As Integer, flag As Boolean 定义变量
n = InputBox("请输入一个正整数") 显示一个输入框,等待用户输入,提示信息为“请输入一个整数”
flag=true 初始化变量
fact=2 初始化变量 do Do-loop until循环开始(此循环不论条件是否成立,都先执行一次循环内的语句后再进行条件判断)
do while n mod fact =0 do while 循环开始(此循环先判断条件n是否能被fact整除)
if flag then 判断条件
print n; "="; fact; 输出结果
else
print "*";fact; 输出结果
end if
n=n/fact 把n用fact整除后继续赋值给n
flag=false 设置输出控制变量
loop do-while循环结束
fact=fact+1 整除数+1
loop until fact>n 直到fact比n大,do-loop until循环结束
这段程序的大致逻辑是这样的:
用户任意输入一个数字,先从2开始整除,如果能整除,那么就把2作为因子显示出来,否则整除数增加1,也就是用3整除该数字,如果能整除,就把3作为因子显示出来,以此类推,直到把所有因子显示完毕。
---------------------------------------------
补充回答:
do while 一句的意思是只要当前的fact能整除n,就继续循环,也就是该数字一直被fact整除,例如我们输入了n=8,第一次被2整除后,此时n=4,还是能被2整除,因此还在do
while循环中继续整除。
if flag一句,由于前面flag被设置为true,而且本程序中仅有一处为true,所以程序只有一次机会输出n=fact,其他机会都是输出"*" fact了。举个例子,当输入数字为n=4时,第一次循环,fact=2,flag=true,所以输出为 4 = 2 ,此时n被2整除后变成了2,而flag=false,因此继续输出为* 2,这是我们看到的输出结果为 4=2 * 2
13.自动关机的代码
匿名 回答:2 人气:15 解决时间:2008-06-10 07:57
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
Private Declare Function OpenProcessToken Lib "advapi32" (ByVal ProcessHandle As
Long, ByVal DesiredAccess As Long, TokenHandle As Long) As Long
Private Declare Function LookupPrivilegeValue Lib "advapi32" Alias
"LookupPrivilegeValueA" (ByVal lpSystemName As String, ByVal lpName As String,
lpLuid As LUID) As Long
Private Declare Function AdjustTokenPrivileges Lib "advapi32" (ByVal TokenHandle
As Long, ByVal DisableAllPrivileges As Long, NewState As TOKEN_PRIVILEGES, ByVal
BufferLength As Long, PreviousState As TOKEN_PRIVILEGES, ReturnLength As Long) As
Long
Const TOKEN_ADJUST_PRIVILEGES = &H20
Const TOKEN_QUERY = &H8
Const SE_PRIVILEGE_ENABLED = &H2
Private Type LUID
UsedPart As Long
IgnoredForNowHigh32BitPart As Long
End Type
Private Type TOKEN_PRIVILEGES
PrivilegeCount As Long
TheLuid As LUID
Attributes As Long
End Type
Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal
dwReserved As Long) As Long
Const HELP_CONTENTS = &H3&
Const EWX_LOGOFF = 0 '注销
Const EWX_SHUTDOWN = 1 '待机
Const EWX_REBOOT = 2 '重新启动
Const EWX_WAIT = 16
Const EWX_FORCE = 4 '终止没有响应的进程
Const EWX_POWEROFF = 8 '关闭电源
Private Sub Form_Load()
Dim hProcessHandle As Long
Dim hTokenHandle As Long
Dim tmpLuid As LUID
Dim tkpNew As TOKEN_PRIVILEGES
Dim tkpPrevious As TOKEN_PRIVILEGES
Dim lBufferNeeded As Long
'获取当前进程的一个伪句柄
hProcessHandle = GetCurrentProcess()
OpenProcessToken hProcessHandle, TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY,
hTokenHandle
LookupPrivilegeValue "", "SeShutdownPrivilege", tmpLuid
egeCount = 1
d = tmpLuid
utes = SE_PRIVILEGE_ENABLED
lBufferNeeded = 0
'允许当前应用程序有关闭操作系统的权限
AdjustTokenPrivileges hTokenHandle, False, tkpNew, Len(tkpPrevious), tkpPrevious,
lBufferNeeded
end sub
Private Sub Command1_Click()
ExitWindowsEx EWX_FORCE Or EWX_POWEROFF, 0
End Sub
14. 删除指定文件
[ 标签:vb代码 ]
请问在用VB设计程序时要用什么代码才能使程序具备删除指定文件的能力,前提是不知道绝对路径,例如在某盘的某个文件夹里有一个命名为123的可执行文件那要用什么代码才能把它删除?
Kill "D:"
Kill删除函数有一定的危险性,它不会有任何的提示信息,建议谨慎使用
= '设置默认文件路径
=
n = "*.txt"
End Sub
Private Sub Combo1_Click()
n = "*" & "." & '用户选择类型
End Sub Private Sub Drive1_Change()
= '选择驱动器
End Sub
Private Sub Dir1_Change()
= '选择文件夹
End Sub
Private Sub Combo1_Change()
n = "*" & "." & '用户选择类型
End Sub
Private Sub Command1_Click()
On Error Resume Next
If unt > 0 Then
For i = 0 To unt - 1
dex = i
SetAttr & "" & me, vbNormal
Kill & "" & me '删除文件
Next i
h
MsgBox "您选择的文件已经全部被删除!", 64, "提示" '提示信息
Else
MsgBox "请您选择所要删除的文件!", 64, "提示"
End If
End Sub
15.编写那个一元二次方程求解的代码。
要求:输入方程式的三个系数,可以得到方程的两个解(包括两个实根,复根,无根看条件而的出结果。)麻烦网友门帮忙一下。是VB程序代码,不是C++。
匿名 回答:3 人气:3 解决时间:2011-04-19 11:12
a = InputBox("输入a的值")
b = InputBox("输入b的值")
c = InputBox("输入c的值")
If a = 0 Then
MsgBox "不是二次方程!"
Else
delta = b ^ 2 - 4 * a * c
p = -b / (2 * a)
q = Abs(delta) ^ (1 / 2) / (2 * a)
If delta > 0 Then
x1 = p + q
x2 = p - q
info = "不等实根: " & x1 & " 和 " & x2
ElseIf delta < 0 Then
x1 = p & "+" & q & "i"
x2 = p & "-" & q & "i"
info = "共轭复根: " & x1 & " 和 " & x2
Else
info = "相等实根: " & p
End If
info = "此方程有两个" & info
MsgBox info
End If
程序代码解释
Dim day, year, month, ddate, ttime As String
Dim alf(0 To 11)
Dim rr Dim nhourlen, nminlen, nseclen As Integer
Const pi = 3.1415926
Private Sub form_load()
al = 1000
End Sub
Private Sub timer1_timer()
rr = / 2
ddate = Format(Now, "mm:dd:yy")
ttime = Format(Now, "hh:mm:ss")
month = Left(ddate, 2)
day = Mid(ddate, 4, 2)
year = Right(ddate, 2)
hh = Left(ttime, 2)
mm = Mid(ttime, 4, 2)
ss = Left(ttime, 2)
= "20" & year
= month
= day
n = Time
nwidth = - 40
nhourlen = nwidth * 4 / 18
nminlen = nwidth * 6 / 18
nseclen = nwidth * 8 / 18
alfsec = ((ss - 15) / 30) * pi
alfmin = ((mm + ss / 60 - 15) / 30) * pi
alfhour = ((hh + mm / 60 + ss / 3600 - 15) / 6) * pi
h
For i = 0 To 11
alf(i) = i * 30 * pi / 180
dth = 1
If i = 0 Or i = 6 Or i = 9 Then
dth = 3
End If
(rr + (rr - 100) * Cos(alf(i)), rr + (rr - 100) * Sin(alf(i)))-(rr
+ (rr - 300) * Cos(alf(i)), rr + (rr - 300) * Sin(alf(i))), RGB(255, 0, 255)
Next i
dth = 3
(rr, rr)-(rr + nhourlen * Cos(alfhour), rr + nhourlen * Sin(alfhour))
dth = 2
(rr, rr)-(rr + nhourlen * Cos(alfmin), rr + nminlen * Sin(alfmin))
dth = 1
(rr, rr)-(rr + nseclen * Cos(alfsec), rr + nseclen * Sin(alfsec))
dth = 5
(rr, rr), RGB(255, 0, 255) End Sub
这段代码写好后运行发现在图片框的控件 秒针不走这是其一,,最重要的是加粗的那段代码不是太理解它的算法,有那们仁兄愿不嫌麻烦给解释下它的意思。。不胜感激。。最好详细点,因为我在MSDN上查了相关属性的用法,可是还是不太理解。。先谢谢了。。。。。。
tomorrow 回答:1 人气:257 解决时间:2010-04-15 06:24
好评率:100%
秒针不走是出在第十八行
ss是取得秒数
前面的时间格式是hh:mm:ss
所以取秒应该用Right,你可能错写成left了 ss = Right(ttime, 2)
你说的加粗是指时针分针和秒针的粗细吗?
PictureBox pictime的.DrawWidth属性是指画笔的粗细
下面的每一次画线之前都设置了一下粗细,按时针分针秒针的粗细分别指了宽度为3,2,1
dth = 3'设置为3
(rr, rr)-(rr + nhourlen * Cos(alfhour), rr + nhourlen * Sin(alfhour))'画时针
dth = 2'设置为2
(rr, rr)-(rr + nhourlen * Cos(alfmin), rr + nminlen * Sin(alfmin))'画分针
dth = 1'设置为1
(rr, rr)-(rr + nseclen * Cos(alfsec), rr + nseclen * Sin(alfsec))'画秒针
提问人的追问 2010-04-14 22:14
你好 很感谢你给我详细解释回答我想问下下面这几行代码
(rr + (rr - 100) * Cos(alf(i)), rr + (rr - 100) * Sin(alf(i)))-(rr
+ (rr - 300) * Cos(alf(i)), rr + (rr - 300) * Sin(alf(i))), RGB(255, 0, 255)
Next i
(rr, rr)-(rr + nhourlen * Cos(alfhour), rr + nhourlen * Sin(alfhour))
(rr, rr)-(rr + nhourlen * Cos(alfmin), rr + nminlen * Sin(alfmin))
(rr, rr)-(rr + nseclen * Cos(alfsec), rr + nseclen * Sin(alfsec))
这几行有点太长了,谢谢你告诉我它的作用,能说下它的详细含义及用法吗?我理解起来真是有点为难,
谢谢你了先
回答人的补充 2010-04-14 23:00
以画时针这句为例:
Line 方法画线
Line (x1,y1)-(x2,y2)
我们知道两点可以确定一条线段,这里前面是起点坐标,后面是终点坐标
对于 (rr, rr)-(rr + nhourlen * Cos(alfhour), rr + nhourlen *
Sin(alfhour))
(rr,rr)是表的中心位置(按PictureBox的高度计算)
nhourlen是根据上面的公式给的时针长度
alfhour是坐标系上时针的弧度
至于它的计算公式 alfhour = ((hh + mm / 60 + ss / 3600 - 15) / 6) * pi
hh+mm/60+ss/3600就是小时数,比如现在是22点50分那么
hh+mm/60+ss/3600=22+50/60+00/3600约等于22.8
一天24小时,24/6=4,就是把每四个小时映射到坐标系上的1,2,3,4象限,至于15/6其实是为了调整对应的区间,15/6=7/2这里可以改成3/2或者+1/2,因为1/2*pi就是1个象限
nhourlen*cos(alfhour)就是时针相对于原点的x坐标,nhourlen*sin(alfhour)就是时针相对于原点的y坐标,所以
(rr + nhourlen * Cos(alfhour), rr + nhourlen * Sin(alfhour))是相对于(rr,rr)的坐标
可能说得有点不清楚,但这是数学上经常用到的,建议参考一下数学书
17.弹力球
(修改那个控件的属性的代码)
“ = 3
yle = 6
d = False
al = 100
d = True
al = 100”
代码:
Private Sub Form_Load() '程序初始化时执行的代码
= 3 '设置为3表示改变Shape1的外观为圆形
yle = 6 '设置为6表示使 Shape1 的填充样式为 横-竖型网格
d = False '这里是注释,这里表示 Timer1 控件不能响应用户生成事件
al = 100 '使两次调用Timer1控件Timer事件间隔时间为100毫秒,如果它的Enabled为False时不执行它的Timer事件(就是“Timer1_Timer( )”那儿的代码)
d = True '表示 Timer2 控件能响应用户生成事件
al = 100 '使两次调用Timer2控件Timer事件间隔时间为100毫秒
End Sub
Private Sub Timer1_Timer() 'Timer1控件被触发时的代码
If >= 0 Then '如果Shape1与窗口顶端(也就是0)的距离大于或等于0时,执行 Else前面的代码。如果不符合条件(即Shape1与窗口顶端的距离不是大于或等于0),就执行Else后面的代码
= - 200 '使Shape1与窗口顶端的距离变小200
Else '这是在“If >= 0 Then ”这句判断时,如果不符合条件(即Shape1与窗口顶端的距离不是大于或等于0),才执行下面的代码
d = False 'Timer1 控件不能响应用户生成事件,就是停止使小球往下运动的时间控件的使用
d = True 'Timer2 控件能响应用户生成事件,就是触发使小球往上运动事件
End If
End Sub
Private Sub Timer2_Timer() 'Timer2控件被触发时的代码
If <= - * (8 / 5) Then '如果Shape1与窗口顶端的距离 小于或等于 这个窗体的可设置对象的高度(即)减去Shape1的高度的 5分之8 ,就执行Else前面的代码,否则执行Else之后的代码
= + 200 'Shape1的Top 增加 200,就是小球往下掉。
Else
d = False 'Timer2 控件不能响应用户生成事件,就是停止使小球往上运动的时间控件的使用
d = True 'Timer1 控件能响应用户生成事件,就是触发使小球往下运动事件
End If
End Sub
回答采纳率:30.5% 2010-04-18 13:44
Shape是图形控件
指的是显示位置离顶的距离
If >= 500 Then // 当控件距离>=500
= - 200 // 下落操作
Else
d = False // 当控件距离<500,停止下落操作,执行上升操作,也就是Timer2_Timer()
d = True
End If
18.用Access创建一个名为“学生”,MDB的数据库
并在其中创建了一张名为“学生基本情况”的数据表,表中存放了学生的基本信息,如 学号 姓名 籍贯
2004001 张红 河北
2004002 李强 山东
2002003 王丰 广西
现在要求利用VB编写一个数据库查询程序,程序的运行界面基本逻辑是:首先文本框(Text1)中输入希望查询的学生学号,然后点击“查询”按钮(Command1),如果数据库中存在该学号,则分别在Text2、Text3、Text4中显示学号、姓名、籍贯信息,否则提示用户“记录不存在”并使Text1获得焦点,要求用户重新输入。当点击退出按钮(Command2)时关闭本窗体。
匿名 回答:2 人气:2 解决时间:2011-06-22 12:05
好评率:0%
这个比较简单,自己弄的话应该很快就可以弄好的,直接上代码。
Private Sub Command1_Click(ByVal sender As , ByVal e As
rgs) Handles
Dim MyConnection As onnection = New
onnection
Dim MyCommand As ommand = New ommand
Dim MyReader As ataReader
tionString =
"Provider=.4.0;Data Source=" & pPath & "学生.mdb" ‘数据库的位置,这里自己看着改吧
dText = "Select * from 学生基本情况WHERE 学号 =
'" & ng().Trim() & "'"
tion = MyConnection
()
MyReader = eReader()
If () = True Then
= MyReader("学号")
= MyReader("姓名")
= MyReader("籍贯")
Else
MsgBox("记录不存在", ation, "系统")
()
End If
()
()
e()
End Sub Private Sub Command2_Click(ByVal sender As , ByVal e As
rgs) Handles
()
End Sub
19.请逐句翻译下段VB程序代码
100
[ 标签:vb程序 ]
m=inputBox("m=")
n=inputBox("n=")
nm=n*m
If m < n Then t = m: m = n: n = t
r=m mod n
Do While (r <> 0)
m=n
n=r
r= m mod n
Loop
Print "最大公约数=", n
Print "最小公倍数=", nm/n
请逐句翻译下,谢谢, 尤其是Do loop循环那部分
回答的好的话,我会追加分的
Carry╮ 回答:6 人气:7 解决时间:2009-05-02 11:21
m=inputBox("m=") 提示一个输入框,要求输入m的值,并把值赋值给变量m
n=inputBox("n=") 提示一个输入框,要求输入n的值,并把值赋值给变量n
nm=n*m 把m*n的值赋值给变量nm ,也就是先把m*n的值保存起来,因为m,n的值即将改变
If m < n Then t = m: m = n: n = t if条件判断,如果m 就把m和n的值交换, 要保证m中放的是最大值 t = m: m = n: n = t 俗称“值交换三步走”, 即先把m的值给t,再把n的值给m,最后把t的值给n, 这样就交换m和n的值 r=m mod n m对n取余,把结果赋值给变量r Do While (r <> 0) 循环:循环条件是r不等于0 如果r不等于0,就进入循环 m=n 把n赋值给m n=r 把r赋值给n r= m mod n m对n取余,把结果赋值给变量r Loop 再次回到 Do While (r <> 0)处进行判断,看r是否为0, 如果r不等于0,就进入循环,执行循环体, 等于0则退出循环 Print "最大公约数=", n 退出循环以后,输出最大公约数= n的值 Print "最小公倍数=", nm/n 输出最小公倍数= nm/n的值 这是求 最大公约数 和 最小公倍数 的常用方法“循环取余法” 回答人的补充 2009-05-02 11:09 Do loop循环: 这种求最大公约数 和 最小公倍数 的方法主要是判断m对n取余后的余数(即r)是否为零。 当r为0时,此时的n就是 最大公约数。所以循环条件为r <> 0(即Do While (r <> 0)) 此种算法是这样的: 先将m对n取余(m一定是大于n的)(代码:r= m mod n) 然后把n给m,此时的m就可以不要了(代码:m=n) 再把余数r给n,(代码:n=r) 然后再取余,再赋值…… 直到r=0为止 此时的n就是最大公约数啦 再根据公式 求出 最小公倍数(因为最开始的m*n已经保存到了nm中,所以nm/n就可以了) 提问人的追问 2009-05-02 11:10 为什么要交换m和n的值呢,这样做有何用意? 回答人的补充 2009-05-02 11:17 这是这种算法的要求,如果m 所以必须保证m是大于n的 6 windows media player控件使用方法 20 [ 标签:vb6,windows media player,控件 ] 具体的方法属性以及调用的方式。当然还有支持播放的文件类型有哪些? Re'Loney_ 回答:2 人气:2 解决时间:2010-04-11 10:10 好评率:66% 1.如何加载WindowsMediaPlayer,控件: 在VB6.0D的菜单栏找到“工程”——“部件”,在弹出的菜单中,拉动滚动条找到WindowsMediaPlayer,将其前面的复选框选中,点击“应用”“确定”即可,然后你就会在你的的控件栏中看到WindowsMediaPlayer控件了。 2.如何播放音乐文件 只需要将赋相应的值即可。 例如要在窗体加载时播放这个文件,只要这样写代码。 Private Sub Form_Load() = & "" End Sub '注意:其中的是一个相对路径表示当前目录下的文件,即你的工程所保存的位置。你也可以使用绝对路径,如: = "C:" 3.如何暂停播放 在command按钮中加入如下代码,即可实现。 Private Sub Command4_Click() End Sub 4.如何在暂停播放之后继续播放 在command按钮中加入如下代码,即可实现。 Private Sub Command3_Click() End Sub 如果想实现音乐从头播放,只需要将第二条中播放音乐中代码再写一遍即可。 Private Sub Command5_Click() = & "" End Sub 5.停止播放的音乐(关闭播放器) 在command按钮中加入如下代码,即可实现。 Private Sub Command1_Click() End Sub 需要特别强调的是WindowsMediaPlayer控件是调用你本机的WindowsMediaPlayer播放器,而WindowsMediaPlayer的默认支持的播放格式为wma、mp3、asf。 视频:添加一个WindowsMediaPlayer控件,语法: = "视频文件路径" flash:添加一个shodkwave flash控件,语法: = "flash文件路径" 可以用commondialog打开本地文件(en): 文件路径用 me 6中的combo控件如何使用? 5 [ 标签:vb6,combo控件 ] vb6中的combo控件如何使用?只需介绍常用属性及基本用法即可 我就是想要了解如何编写代码来实现点击相应下拉列选项触发相应事件 波『はやし』 回答:3 人气:6 解决时间:2008-12-15 18:59 举个例子。。combo里装的 +,- Private sub form_load() m"+" m"-" end sub 触发combo里的元素 private sub combo1_click() dim a a=dex select case(a) case 0 label1=val()+val() case 1 label2=val()-val() end select end sub 6.0中MSchart控件的使用 5 [ 标签:vb6.0,mschart,控件 ] 想用MSchart作曲线图表示温度的变化,通过ADO查询数据库并在Datagrid上显示,如何使MSchart的图根据查询出的数据变化。 、風℡◎ɑ﹏ 回答:1 人气:6 解决时间:2010-05-04 12:22 '窗体中 Dim ValueColor(2) As ColorConstants Const RowCount = 25 Dim rs As New set Dim HideValue(2, 24) As Integer Private Sub Form_Load() Call OpenConn sql = "select 日期,sum(a.处方总金额) as 处方总金额 from user_gs as a group by 日期" sql, cn, adOpenKeyset, adLockReadOnly ChartShowResult '显示曲线图 End Sub Private Sub ChartShowResult() '显示曲线图 Dim WinNum As String Dim WinNumArr(2) As Integer Dim StrIssue As String Dim RowI As Integer Dim SumJO As Integer, SumDX As Integer RowI = RowCount If Count = 0 Then Exit Sub ReDim ss(Count) With MSCPL3 .RowCount = RowCount 'Count .ColumnCount = 1 .chartType = VtChChartType2dLine On Error Resume Next For i = 1 To RowCount ' RowI = RowI - 1 ' If RowI = 0 Then Exit Sub .Row = i .Data = ("处方总金额") .RowLabel = Format(("日期"), "mm-dd") xt Next i End With End Sub '模块中 Public cn As New tion Public rs As New set Public Sub OpenConn() Set cn = New tion Set rs = New set Location = adUseClient ' "Provider=.4.0;Data Source=" & & ";Persist Security Info=False" "Provider=.4.0;Data Source= D:社区管理软件;Persist Security Info=False;Jet OLEDB:Database Password=huang987654" End Sub '关闭数据库连接 Public Sub CloseConn() Set rs = Nothing Set cn = Nothing End Sub '给你做个参考吧 回答人的补充 2010-04-28 12:19 6.0 使用commondialog控件 提示没安装字体 [ 标签:vb6.0,控件,字体 ] 使用通用对话框的字体对话框时提示没安装字体,请从控制面板打开字体文件夹一边安装字体,可是我电脑里面安装了很多字体,而且在其他地方也能用 木头 回答:1 人气:1 解决时间:2010-03-31 18:16 Private Sub Command1_Click() = 1 '一定要设置 nt '使用字体对话框 字体 = me 字号 = ze End Sub 6.0 MSHFlexGrid控件 [ 标签:vb6.0,mshflexgrid,控件 ] 我想在一个form窗体的MSHFlexGrid控件显示我SQL2000数据库的内容.代码也该怎么写.. 匿名 回答:1 人气:1 解决时间:2010-03-19 17:50 好评率:0% 1、定义一个conn 如Dim conn As New tion然后"你数据库的相关信息" 2、定义rs如Dim rs As New set然后"查询语句",conn,3,1 3、 注:MSHFlexGrid1表名称 set urce=rs 这些代码都写在按钮里面 窗口界面拖一个按钮和MSHFlexGrid !用VB自制媒体播放器 小蘑菇:姐姐来看我刚刚下载的《黑衣人2》,可好玩了。 小叮当:用MediaPlayer看的?不如这样吧,今天我教你怎样制作一个媒体播放器,你看如何? 小蘑菇:自己做的媒体播放器也可以看《黑衣人2》吗? 小叮当:那是当然的,不然我岂不是变成了大骗子? 小蘑菇:呵呵,那感情好呀,这样我可以拿到班上给同学炫耀一下喽。 小叮当:我们这个媒体播放器的目的是可以播放VCD、WAV、MP3等媒体文件,而且全部的功能基本上和Windows附带的媒体播放器差不多。其实要制作这样一个播放器并不困难,因为在VB中提供了一个MediaPlayer控件,它帮我们解决了很多实际问题,只要按照下面的步骤就可以了。 1、因为我们需要使用到MediaPlayer控件,所以刚开始就要右击工具面板并在部件添加窗口里选择“Windows MediaPlayer”来添加这个控件,同时还要添加“CommonDialog”控件。 2、在窗口设计器中创建一个MediaPlayer控件、五个Command Button控件和一个CommonDialog控件。 3、将Form1的Caption属性更改为“小叮当的媒体播放器”。 4、分别将五个Command Button控件的Caption属性分别命名为“暂停”、“播放”、“停止”、“选择”和“退出”,然后把它们按照一定的位置放好。 5、选中CommonDialog控件之后,在右边属性的“Filter”对话框中输入“WAV(*.wav)|*.wav|MIDI(*.mid)|*.mid|MPEG(*.mpeg)|*.mpeg|DAT(*.dat)|*.dat|AVI(*.avi)|*.avi|MP3(*.mp3)|*.mp3”的文件过滤选项,这样就可以支持各种常见的媒体影像文件了。 小蘑菇:看起来和真正的MediaPlayer差不多呀,还蛮有专业水准的呢。 小叮当:是呀,这全要归功于MediaPlayer控件,下面就是代码编写部分内容了: 1、首先要双击Form1窗口,并选择“通用”对象,输入下面的通用代码: Option Explicit Dim playfilename As String /定义播放文件的名称 Dim playposition As Double /定义当前播放的位置 2、双击“暂停”按键并输入下列代码: Private Sub Command1_Click() d = False /暂停按键失效 /暂停播放 playposition = tPosition /当前的播放位置 End Sub 3、双击“播放”按键并输入下列代码: Private Sub Command2_Click() d = True /暂停按键有效 d = True /停止按键有效 me = playfilename /播放媒体文件名称 ionStart = playposition /当前播放的位置 /播放媒体文件 End Sub 4、双击“停止”按键并输入下列代码: Private Sub Command3_Click() playposition = 0 /停止播放 d = False /停止按键无效 d = False /暂停按键无效 d = True /播放按键有效 /停止播放 End Sub 5、双击“选择”按键并输入下列代码: Private Sub Command4_Click() en /打开文件对话框 playfilename = me /记录播放文件名 playposition = 0 /第一次打开文件时候,播放位置为0 End Sub 6、双击“退出”按键并输入下列代码: Private Sub Command5_Click() Unload Me /卸载窗口 End /结束程序 End Sub 代码全部输入完毕之后,运行程序后按下“选择”按键,此时会弹出打开文件对话框供你选择需要播放的文件。 选中相应的文件之后,就可以进行欣赏了。如果需要在别的计算机上使用这个程序的话,还可以选择“工具”菜单下的“生成.exe文件”选项来制作一个可以直接运行的exe格式文件,这样将程序复制到其他机器上就可以使用了。” 小蘑菇:好开心呀,我来试试用自己做的程序看《黑衣人2》,哈哈,真过瘾! 小叮当:瞧你乐得这个劲,那你就慢慢看吧。对了,通过VB还可以制作Flash动画、QuickTime等多种格式的播放器,你自己不如依葫芦画瓢的尝试一下,看看你的天份有多少,呵呵! 小蘑菇:放心吧,保证不会让你失望的! Dialog 控件 提供诸如打开和保存文件、设置打印选项、选择颜色和字体等操作的一组标准对话框。运行 Windows 帮助引擎时,控件还能够显示帮助。 CommonDialog 控件在 Visual Basic 和 Microsoft Windows 动态连接库 例程之间提供了接口。为了用该控件创建对话框,必须要求 在 Microsoft Windows System 目录下。 为了在应用程序中使用 CommonDialog 控件,应将其添加到窗体上并设置属性。控件显示的对话由控件的方法决定。运行时,调用相应方法后将显示对话框或执行帮助引擎;设计时在窗体上将 CommonDialog 控件显示成一个图标。此图标的大小不能改变。 CommonDialog 控件可以显示如下常用对话框: “打开” “另存为” “颜色” “字体” “打印” 要使用 CommonDialog 控件 1. 若未添加 CommonDialog 控件,则应从“工程”菜单中选定“部件”,将控件添加到工具箱中。在标记对话的“控件”中找到并选定控件,然后单击“确定”按钮。 2. 单击工具箱中的“CommonDialog”控件并在窗体上绘制该控件。在窗体上绘制 CommonDialog 控件时,控件将自动调整大小。象 Timer控件一样,CommonDialog 控件在运行时不可见。 3. 运行时,请适当使用下表所列方法显示需要的对话。 显示“打开”和“另存为”对话框 有了“打开”对话框就可指定驱动器、目录、文件扩展名和文件名。“另存为”对话框在外观上与“打开”对话框相同,只是对话框的标题和文件名是暗淡的。运行时选定文件并关闭对话框后,可用 FileName 属性获取选定的文件名。 要显示“打开”对话框 1. 指定在“文件类型”列表框中显示的文件过滤器列表。 可用下列格式设置 Filter 属性: description1 | filter1 | description2 | Description 是列表框中显示的字符串——例如,"Text Files (*.txt)"。Filter 是实际的文件过滤器─—例如,"*.txt"。每个description | filter 设置间必须用管道符号分隔 (|)。 2. 用 ShowOpen 方法显示对话框。 选定文件后可用 FileName 属性获取选定文件的名称。 对所有公共对话框,当 CancelError 属性为 True,而且用户单击了对话框的“取消”按钮时将生成一个错误。在显示对话框时捕获错误,以此检测是否按了“取消”按钮。 下列代码显示“打开”对话框并以选定的文件名为打开文件过程的参数: Private Sub mnuFileOpen_Click () 'CancelError 为 True。 On Error GoTo ErrHandler '设置过滤器。 = "All Files (*.*)|*.*|Text _ Files (*.txt)|*.txt|Batch Files (*.bat)|*.bat" '指定缺省过滤器。 Index = 2 '显示“打开”对话框。 en '调用打开文件的过程。 OpenFile (me) Exit Sub ErrHandler: '用户按“取消”按钮。 Exit Sub End Sub 使用“颜色”对话框 可用“颜色”对话框在调色板中选择颜色,或者创建并选定自定义颜色。运行时,选定颜色并关闭对话框后可用 Color 属性获取选定的颜色。 要显示“颜色”对话框 1. 将CommonDialog控件的Flags属性设置成Visual Basic常数cdlCCRGBInit。 2. 用 ShowColor 方法显示对话框。 可用 Color 属性获取选定颜色的 RGB 值。单击“Command1”命令按钮时,下列代码将显示“颜色”对话框: Private Sub Command1_Click () '将 Cancel 设置成 True。 Error = True On Error GoTo ErrHandler '设置 Flags 属性。 = cdlCCRGBInit '显示“颜色”对话框。 lor '将窗体的背景颜色设置成选定的'颜色。 lor = Exit Sub ErrHandler: '用户按了“取消”按钮。 Exit Sub End Sub 使用“字体”对话框 “字体”对话框根据大小、颜色、样式选择字体。用户一旦在“字体”对话框中选定字体后,下列属性就会包含有关用户选项的信息。 要显示“字体”对话框 1. 将 Flags 属性设置为下述 Visual Basic 常数之一: cdlCFScreenFonts(屏幕字体) cdlCFPrinterFonts(打印机字体) cdlCFBoth(既可以是屏幕字体又可以是打印机字体) 警告 在显示“字体”对话框之前必须将 Flags 属性设置为这些数值之一,否则将发生字体不存在错误。 2. 用 ShowFont 方法显示对话框。 下列代码根据用户在“字体”对话框中的选择来设置文本框的字体属性: Private Sub Command1_Click () '将 Cancel 设置成 True。 Error = True On Error GoTo ErrHandler '设置 Flags 属性。 = cdlCFBoth Or cdlCFEffects '显示“字体”对话框。 nt '根据用户的选择来设置文本属性。 = me = ze = ld = alic ine = derline rikethru = rikethru lor = Exit Sub ErrHandler: '用户按了“取消”按钮。 Exit Sub End Sub 中插入视频 20 Ctrl+T 在弹出的对话框中 控件——选中“Windows Media Player”项 应用 在工具栏新出现一个控件图标 新建此控件 使用如下: ==========WindowsMediaPlayer的常用属性和方法=========== [基本属性] URL:string 可以指定媒体位置 enableContextMenu:Boolean 显示/不显示播放位置的右键菜单 fullScreen:boolean 全屏显示 stretchToFit:boolean 非全屏状态时是否伸展到最佳大小 uMode:string 播放器的模式,full:有下面的控制条; none:只有播放部份没有控制条 playState:integer 当前控件状态,下面是三种基本状态: 3:正在播放 2:暂停 1:已停止 状态变化时会触发OnStatusChange事件 [controls] 可通过ls对播放器进行控制并取得相关的一些信息: ; 播放 ; 停止 ; 暂停 tPosition:Double 当前播放进度 tPositionString:string 时间格式的字符串 "0:32" [currentMedia] 可以通过tMedia取得当前媒体的信息 on Double 总长度 onString 时间格式的字符串 "4:34" [settings] 可以通过gs对播放器进行设置,包括音量和声道等。 :integer 音量 (0-100) e:integer 声道,通过它应该可以进行立体声、左声道、右声道的控制。 1)如何在VB中插入flv视频? RT,需要什么控件?代码是什么?求教! 可以说详细些吗?应该和插入普通的swf不一样吧? 最佳答案 在工具栏右键 部件----找shockwave flash 没有的话就去网上下个adobe flash 就可以了 例子: 假设你假如的控件叫: Shockwaveflash1 代码可以是: = +"/" ================================== ++++++++++++++++++++++++ ++++++++++属性++++++++++ ++++++++++++++++++++++++ 语法:AlignMode As Long 说明:对齐方式(与SAlign属性联动).当控件的长宽比例与影片不一致且WMode不为ExactFit时,影片在控件中显示的位置可用该属性调整. 属性值与相应的对齐方式: 1:左对齐 2:右对齐 4:顶对齐 8:底对齐 注意:也可以组合各种对齐方式,就是将这四个基本值组合相加.比如同时左对齐和顶对齐,属性值则设为5. 语法:BackgroundColor As Long 说明:影片的背景色.默认的影片背景色为-1.如果影片设置了底色或有图片当作背景,那么看不出来该属性值的改变会有什么影响 。 注意:颜色值使用RGB格式的颜色值 语法:Base As String 说明:指定用于解决影片中所有相对路径的声明的基地址.当影片与其需要的其他文件不在同一目录中的时候该属性特别有用.如不特别指定,Base的值默认为".",也就是当前影片所在的路径. 语法:BGColor As String 说明:影片的背景色.与BackgroundColor不同的是,BGColor是一个六位的十六进制数,每两位分别代表红绿蓝颜色值.如:FFEEAA表示R值为FF,G值为EE,B值为AA. 语法:DeviceFont As Boolean 说明:决定是否使用影片内嵌的字体,默认值为False.将该属性值设为True则强制播放器不使用影片中内嵌的字体而使用本地系统字体. 语法:EmbedMovie As Boolean 说明:影片是否被存贮到控件所在的容器中.当你已载入一个影片后将该属性设为True,播放影片时就不必再去读取SWF文件了.这样可以使SWF文件镶进程序中,不必再读取文件.但将该属性设为True后,控件的Movie属性就不再接受新的值了.要想播放另一个影片(给Movie属性赋新值),必须先将该属性(EmbedMovie)设为False. 语法:FrameNum As Long 说明:影片当前帧的编号(从0开始计数).设置该属性值将使影片停在由FrameNum指定的帧处. 注意:不仅可以从中获得当前帧,还可以设置当前帧,即跳转到某帧 语法:Loop As Boolean 说明:控制影片是否循环播放.设为True就是循环播放,设为False则只播放一次. 语法:Menu As Boolean 说明:是否显示菜单.设为True显示所有菜单,设为False菜单被屏蔽,但仍有一项"About Macromedia ",点击后会打开Macromedia的网站.如果你实在不喜欢这个菜单,应该在程序中通过拦截鼠标消息的方法来达到目的. 语法:Movie As String 说明:要播放的影片路径(URL).设置该属性为一个SWF文件的URL,当该属性被设置后,控件将自动载入文件并播放它. 语法:Playing As Boolean 说明:当前播放状态.如果影片正在播放,该属性值为True,否则为False. 语法:Quality As Long 说明:画面质量. Quality的属性可以取: 0:相当于Quality2取"Low" 1:相当于Quality2取"High" 2:相当于Quality2取"AutoLow" 3:相当于Quality2取"AutoHigh" 语法:Quality2 As String 说明:画面质量 Quality的属性可以取: Low:偏重于播放速度而不管显示效果,而且不启用消除锯齿功能. High:偏重于画面而不管播放速度,并且总是启用消除锯齿功能.如果影片中不包含动画就平滑处理位图;如果有动画,那么位图就不被平滑处理. AutoLow:先着重于播放速度,但只要有可能就改善显示效果.一开始播放时先禁用消除锯齿功能.如果播放器检测到处理器能承受得了,就启用消除锯齿功能. AutoHigh:一开始是播放速度和显示效果并重,但如有必要就牺牲画质确保速度.开始播放时就启用消除锯齿功能.但如果实际的帧速率比设计时指定的速率慢了,就禁用消除锯齿功能来提高播放速度. 语法:ReadyState As Long 说明:影片的当前状态. ReadyState的值有: 0:正在载入 1:未初始化 2:已载入 3:正在交互 4:完成例子 注意:可以使用该属性来粗略的判断SWF文件的读取进度,但如果想得到更精确的判断,应该在在SWF文件中使用FScommand()来达到与VB的互动与联系,即传送资料给VB.
发布者:admin,转转请注明出处:http://www.yc00.com/web/1690640462a383538.html
评论列表(0条)