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

VB新手常見問題解答

編輯:VB綜合教程
SP2、SP3、企業版有何區別
  
  問請問VB中的SP2、SP3、企業版這三種,各代表什麼含義?
  
  答SP是ServicePack的縮寫。微軟每推出一個軟件後,都會不定期地推出一些補丁程序,依時間先後稱為SP1、SP2等等。後一個SP版本包括前一個版本的全部內容,所以如果你安裝了SP3就用不著安裝SP2了。SP可以從微軟的站點免費下載。VB5.0的SP下載地址:http://msdn.microsoft.com/vstudio/sp/vs97/。VB6.0的SP下載地址:http://msdn.microsoft.com/vstudio/sp/default.asp。在ServicePack的Readme文件中介紹了該ServicePack修改了哪些錯誤。VB有三個主要版本:學習版、專業版、企業版。企業版是功能最全的版本,當然也是最貴的版本。
  
  
  API的意義是什麼
  
  
  問編程中經常碰到API。請問API的意義是什麼?如何知道編程中經常用到的窗口句柄、窗口類名等?
  
  答API是ApplicationProgrammingInterface(應用編程接口)的縮寫,也就是應用程序調用系統功能的接口。WindowsAPI主要包括由Windows系統定義的函數、消息及與之相關的數據類型。我們使用各種開發工具歸根結底都是和API打交道。但是API本身比較難掌握,所以VisualBasic提供了可視的面向對象的控件,使初學者即使不太了解API,也可以編寫Windows程序。但是VisualBasic提供的控件畢竟是有限的,不可能包括API的所有方面,所以一些復雜的功能仍然需要調用API來實現。
  
  
  API定義中的&H是什麼含義
  
  
  問現在我看到一些用API函數做的例程,其中有一個語句:PUBLICCONSTLVM_FIRST=&H1000,該語句中&H1000代表的是什麼含義?
  
  答&H是16進制的表示,比如&H10等於十進制的16。
  
  
  為何總提示“變量未定義”
  
  
  問下面是一個關閉Windows的小程序:
  
  OptionExplicit
  
  PrivateDeclareFunctionExitWindowsExLib“user32”(ByValuFlagsAsLong,ByValdwReservedAsLong)AsLong
  
  PrivateSubForm_Load()
  
  ExitWindowsExEWX_FORCEOrEWX_LogoFFOrEWX_SHUTDOWN,0
  
  EndSub
  
  但編譯的時候,總是提示:EWX_FORCE變量未定義,但EWX_FORCE是一個參數。這是為何?
  
  答EWX_FORCE和其他幾個參數都是WindowsAPI中定義的常數。你使用了OptionExplicit(這是個好習慣,便於發現錯誤),所以VB發現未定義的符號都會進行提示,這有助於發現拼寫錯誤和遺漏參數定義。你應該從VB的Win32api.txt中復制這幾個參數的定義。
  
  
  如何保存圖片
  
  
  問我在VB的主窗體要裝入一幅事先選好的圖片,程序運行後我可以在圖片上進行修改並保存它,以備以後調用。請問怎樣辦?
  
  答你可以把Form或PictureBox的AutoDraw屬性設為True,進行修改後使用VB的SavePicture語句進行存盤。如:
  
  SavePicturePicture1.Picture,“c: est.bmp”
  
  這種存盤的文件為.bmp文件,顏色數與當前屏幕的色彩數相同。如果你的存盤要求很高,希望控制存盤格式,只能借助於其他控件,比如ImageMan(http://www.data-tech.com下載)、LeadTools(http://www.leadtools.com下載)等等。
  
  
  “實時錯誤9下標越界”錯誤
  
  
  問我在為一數組賦值時出現如下錯誤:“實時錯誤9——下標越界”。出錯的代碼如下:
  
  Diminputdata()AsSingle
  
  inputdata(0)=Text2(0).Text/Text2(1).Text注釋:入學率
  
  請問為何會出現這種錯誤?
  
  答VB在使用數組前必須指定數組的大小。一種辦法是在定義時確定大小,如:DimInputData(10)AsSingle,另一種是采用動態數組。對於你的程序,數組聲明部分可以不用修改,而在出錯語句前加一句:ReDimInputData(10)AsSingle。
  
  
  如何打開光盤上的數據庫
  
  
  問我在編一個VB程序,當程序刻到光盤以後,不能使用,經過檢查發現是因為.mdb文件為只讀,程序出錯:“該數據庫文件已經被另外的一個用戶以獨占的方式打開,您不能訪問”。請問各位高手怎麼辦?可是我用Access卻可以閱讀該數據庫(只讀)。
  
  答如果你用Data控件使用該數據庫,將Data控件的ReadOnly屬性設為True,將Exclusive屬性設為True。如果ReadOnly屬性為False,則就出現你所見到錯誤信息。如果不將Exclusive屬性設為True,將出現Can注釋:tlockfile的錯誤信息。如果你是使用OpenRecordset語句打開數據庫,Exclusive屬性對應著dbDenyWrite和dbDenyRead參數。
  
  
  怎樣避免當前窗口被關閉
  
  
  問在按下右上角的關閉鍵後,怎樣避免當前窗口被關閉?
  
  答在按下關閉鍵後,會發生Form_Unload和Form_QueryUnload事件。這兩個事件都有個Cancel參數,如果在事件處理過程中將其設為True就可以避免窗口被關閉。對於你的問題,Form_QueryUnload事件可能更好些,因為它有一個UnloadMode參數可以區分關閉窗口的指令是用戶做出的,還是系統做出的,或者是本程序代碼產生的。
  
  
  DLL的編程格式問題
  
  
  問我是第一次編寫ActiveXDLL程序,在DLL中,我只在類模塊中寫了一個函數CARD,編譯成DLL後,在另外一個程序中調用,在模塊中聲明:
  
  PublicDeclareFunctioncard_configLib"c: estcard.dll"(ByValaddressAsInteger,ByValintermitAsInteger)
  
  在一個按鈕中寫如下代碼:
  
  c=card_config(12,12)
  
  運行後出現錯誤:編譯ActivexDLL後,調用時出現錯誤:“實時錯誤453,找不到DLL入口點”望指教。如有可能:請詳細告之DLL的編程格式。
  
  答Declare語句只能用來調用標准DLL,而不能用於調用ActiveXDLL,這是你程序出錯的原因。VB無法生成標准DLL,只能生成ActiveXDLL。要調用ActiveXDLL,一般通過CreateObject語句調用,或在集成環境中選擇菜單“工程/引用”,在對話框中選擇你要調用的ActiveXDLL。這樣你就可以在程序中使用ActiveXDLL中定義的對象或函數。
  
  
  怎樣啟動其他應用程序
  
  
  問怎樣在VB中啟動其他Windows應用程序,例如記事本?
  
  答你可以使用VB的Shell函數調用其他應用程序。如:
  
  Shell“Notepad.exec:autoexec.bat”
  
  
  如何打印MSChart
  
  
  問如何打印MSChart控件中的內容?
  
  答MSChart本身沒有打印功能,所以必須先用EditCopy將圖像放在剪貼板中,然後再打印,如:
  
  MSChart1.EditCopy
  
  Printer.Print″″
  
  Printer.PaintPictureClipboard.GetData(),0,0
  
  Printer.EndDoc
  
  
  “can′tfinddllentrypoint”是指什麼
  
  
  問出現以下錯誤信息是什麼意思?“run-timeerror注釋:453注釋:can注釋:tfinddllentrypointopenprocessinkernel32”,(我有一個定義PrivateDeclareFunctionopenprocessLib“kernel32"(ByValdwdesireaccessAsLong,ByValbInherithandleAsLong,ByValdwprocessIdAsLong)AsLong)
  
  答把openprocess改為OpenProcess。因為在Win32下,DLL中的函數名是區分大小寫的。在kernel32中只有OpenProcess函數,沒有openprocess函數。
  
  
  “對象不支持該屬性或方法”錯誤
  
  
  問為什麼執行Data1.Recordset.FindFirst“PubID=”&DBCombo1.BoundText時出現“對象不支持該屬性或方法”錯誤?
  
  答這是因為FindFirst、FindNext、FindLast等方法不支持Table類的記錄集,但可以使用Seek方法進行查找工作。但你必須對Pubid字段建立索引。如果想使用FindFirst方法,請修改Data1的RecordsetType屬性為Dynaset。->

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