程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> VB實用編程兩例

VB實用編程兩例

編輯: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為後退量,可適當調整

  Ifi<0ThenMMControl1.From=0

  ElseMMControl1.From=i

  EndIf

  MMControl1.Command="Play"

  EndSub

  PrivateSubMMControl1_StepClick(CancelAsInteger)'對Step按鈕的功能改進

  DimjAsInteger

  j=MMControl1.Position 100'數值100為前進量,可適當調整

  Ifj>MMControl1.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

  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時,因為這時的回車鍵是起換行的作用。

->

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved