VB实用编程两例

f1084202165

f1084202165

2016-02-19 20:14

给自己一点时间接受自己,爱自己,趁着下午茶的时间来学习图老师推荐的VB实用编程两例,过去的都会过去,迎接崭新的开始,释放更美好的自己。
该程序通过VB的多媒体控件MCI32.OCX可以打开MPEG压缩文件(如VCD2.0版的.DAT文件)来实现一个VCD播放器的设计

  首先必须确保在你的Windows系统中SYSTEM.INI文件关于[MCI]中需有MPEGVideo项(一般Windows95和Windows98中均有此项)。

  次在VB中建立一个新窗口,加入多媒体部件MicrosoftMultimediaControl5.0(位于C:WindowsSystemMCI32.OCX),以及对话框部件MicrosoftCommonDialogControl5.0(位于C:WindowsSystemCOMMONDLG32.OCX),将MCI控件拖放至窗体Form上,调整其大小,并将窗体的大小也调整为与其同样大小;将其九个按钮(从左至右为:Prev、Next、Play、Pause、Back、Step、Stop、Record和Eject)中的Record按钮的Visible属性设为False,其余按钮中的Visible属性和Enabled属性设为True,以上按钮的设置可通过MMControl的属性栏内"自定义"项来设置。对话框控件的DefaultExt属性设为.DAT,DialogTitle属性设为"打开多媒体文件",Filter属性设为"*.DAT,*.WAV",InitDir属性设为"G:MPEGAV"(假设光驱盘符为G)。

  源代码如下:

  OptionExplicit

  PrivateSubForm_Load()

  DimResponseAsInteger

  MMControl1.DeviceType="MPEGVideo"

  CommonDialog1.ShowOpen'通过对话框选择不同的VCD文件

  MMControl1.filename=CommonDialog1.filename'选定要播放的文件

  MMControl1.Command="Open"

  MMControl1.Command="Play"

  EndSub

  PrivateSubForm_Unload(CancelAsInteger)

  MMControl1.Command="close"

  EndSub

  PrivateSubMMControl1_BackClick(CancelAsInteger)'对Back按钮的功能改进

  DimiAsInteger

  i=MMControl1.Position-100'数值100为后退量,可适当调整

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  Ifi0ThenMMControl1.From=0

  ElseMMControl1.From=i

  EndIf

  MMControl1.Command="Play"

  EndSub

  PrivateSubMMControl1_StepClick(CancelAsInteger)'对Step按钮的功能改进

  DimjAsInteger

  j=MMControl1.Position 100'数值100为前进量,可适当调整

  IfjMMControl1.LengthThenMMControl1.From=MMControl1.Length

  ElseMMControl1.From=j

  EndIf

  MMControl1.Command="Play"

  EndSub

  MCI控件还有很多属性,如画面播放位置hWndDisplay属性等等,大家可参阅相关资料自行摸索。

  调整好窗体的标题、图标、颜色等,然后编译成.EXE文件,你就可以在Windows下拥有自己的VCD播放器了。


  有时在一个窗口中出现较多的控制件时,如果能向导式地建议用户下一步该做什么,不失为上策。在VisualBasic的程序设计中,我们可以使用语句:object.SetFaocus使我们希望的控件得到输入焦点,举个例子:在Form1中我们加入一个按钮Command1和一个文本输入Text1,双击按钮控件,然后键入如下代码:text1.SetFocus

  再按F5运行程序,您就会看到一单击按钮,文本框会立即取得输入焦点。另外,我们还可以使用语句:Sendkeys"{TAB}"使下一个控件获得焦点,但我们需要在设计时确定各控件的Index值。(在Properties窗口中)让控件自己感知自己的工作已完成,而主动将焦点让出,会使用户觉得应用程序很聪明,也减少了用户出错的机会。

  可是当焦点切换的两个控件相隔有一定距离时,上述的方法有时也不足以引起用户的注意,那么一种好的解决方法是将鼠标箭头也移到控件上。可惜,VB并不支持鼠标移动,那我们就求助API函数,API函数SetCursorPos可让我们如愿。

  下面是子程序MoveCursorOn,它可让鼠标移动到指定控件上方。下列代码请放在declarations段中:

  TypePoinTAPI

  xAsInteger

  yAsInteger

  EndType

  DeclareSubSetCursorPosLib"User"(ByvalxAsInteger,ByvalyAsInteger)

  DeclareSubClientToScreenLib"User"(ByvalhwndAsInteger,IpPointAsPointAPI)DeclareFunctionGetParentLib"User"(Byval hwnd As Integer)AsInteger

  然后建立一个新的子程序(ALT+N→N→键入子程序名MoveCursorOn),下面是子程序的代码:

  SubMoveCursorOn(sourceAsControl)

  DimPtAsPoinTAPI

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  DimhparentAsInteger

  p.x=(Source.Left+Source.Width/2)/Screen.Twipsperpixel)

  p.y=(Source.Top+Source.Height/2)/Screen.Twipsperpixel)

  hparent=GetParent(source.hwnd)

  ClientToScreenhparentpt

  SetCursorPos pt.x pt.y

  EndSub

  使用该子程序很容易,例如我们想把鼠标移动到按钮Command1上,就可使用语句MoveCursorOnCommand1您会看到鼠标箭头已经指着按钮Command1。

  需要说明的是,千万不要滥用该子程序。让鼠标自己满屏乱飞,我们的用户会感到失去对应用程序的控制,这是违反我们的初衷的。在有数个输入框的窗口中(这在数据库应用程序中是很典型的),当用户完成第一个输入框的输入后,总爱习惯性的加一个回车,希望输入焦点落到下一个输入框中(DOS中大多数应用程序是如此),可往往事与愿违,这一回车却触发了拥有Default特性的按钮,结果不是关闭了当前窗口就是又蹦出另一窗口。用户睁大眼睛看着屏幕,"咦?!我到底做了什么?”这是Windows新用户经常遇到的事情。解决它其实很容易,只需在输入框的KeyPress事件中加入如下代码:IFKeyASCII=13Then KeyASCII=0 Sendkeys"{TAB}"ENDIF这样,当用户在这个输入框中键入Enter时,就象键入TAB键时,焦点被移到下一控件上。但需注意,这种方法不适用于多行的TextBox,即TextBox的MultiLine特性设为True时,因为这时的回车键是起换行的作用。

->

展开更多 50%)
分享

猜你喜欢

VB实用编程两例

编程语言 网络编程
VB实用编程两例

VB编程实用精典小技巧3例

编程语言 网络编程
VB编程实用精典小技巧3例

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

ListBox编程两例

编程语言 网络编程
ListBox编程两例

ASP编程实用20例

Web开发
ASP编程实用20例

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

VisualBasic6.0实用编程技巧3例

编程语言 网络编程
VisualBasic6.0实用编程技巧3例

VB数据库编程经验两则

编程语言 网络编程
VB数据库编程经验两则

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

使用VB获取网上邻居里的计算机名

使用VB获取网上邻居里的计算机名

一组VB实用小程序

一组VB实用小程序
下拉加载更多内容 ↓