新聞| | PChome| 登入
2008-01-12 02:34:04 | 人氣88| 回應0 | 上一篇 | 下一篇
推薦 0 收藏 0 轉貼0 訂閱站台

解析VB的事件驅動編程

很多情況下我們需要在程式中確定當前Windows的目錄,VB中自身並沒有這樣的函數,但我們可以借助WindowsAPI來達到目的,這個關鍵的函數就是:Kernel32中的GetWindowsDirectory。
  首先要在新建的程式中加入一個Module,在該Module中作如下聲明:

DeclareFunctionGetWindowsDirectoryLib“kernel32”Alias“GetWindowsDirectoryA”(ByVallpBufferAsString,ByValnSizeAsLong)AsLong
  
  這裡的幾個參數說明一下:lpBuffer是一個字符串,用以返回Windows的目錄值(實際上是一個指針),這個目錄值不帶反斜杠的,比如C:\Windows,但有一種情況例外:當Windows安裝在根目錄下時返回反斜杠,比如C:\;第二個參數是前一個字串的長度,你得告訴系統為返回值預留的字串的最大長度(其實這個參數實在有些雞肋的感覺);函數的返回值,在成功的情況下是目錄字符串的長度,在不成功時返回NULL值,還有一種情況,就是返回值超出預留的串長度,那麼該函數就返回實際值應有的長度。

  函數說明完畢,可以看到,為了防止出錯情況,函數引入了nSize參數,但只要使用下述經典的取目錄代碼,可保證程式平穩運行。

PublicFunctionMyGetWinDirectory()AsString
  DimsBufferAsString
  DimlSizeAsLong
  sBuffer=String(255,0)
  lSize=GetWindowsDirectory(sBuffer,Len(sBuffer))
  sBuffer=Left(sBuffer,lSize)
  sBuffer=sBuffer+“\”
  MyGetWinDirectory=sBuffer
EndFunction
  
  這裡程式首先為字符預留了255Bytes,應該是足夠了,不會有人用這麼長的Windows目錄名的,更重要的是超出255的長文件名Windows是不支援的;然後調用GetWindowsDirectory函數,通過返回值lSize截取緩衝區中有用的部分重新定義sBuffer;最後再加上反斜杠,形成完整的路徑名。

  現在你可以試一下你的新函數:在表單Form1中加入一個文本框Text1,然後再加入一個命令鍵Command1,在Command1_Click()事件中加入以下代碼:

 PrivateSubCommand1_Click()
  Text1=MyGetWinDirectory
  MsgBoxText1
 EndSub
 
  最後運行程式,佔擊一下Command1,看一下實際的運行效果。

台長: Kenny
人氣(88) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 教育學習(進修、留學、學術研究、教育概況) | 個人分類: 程式設計 |
此分類下一篇:Visual baisc中Byval與Byref的區別
此分類上一篇:編寫快速高效的VB程式

是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文