SP2、SP3、企業版有何區別
問 請問VB中的SP2、SP3、企業版這三種,各代表什麼含義?
答 SP是Service Pack的縮寫。微軟每推出一個軟件後,都會不定期地推出一些補丁程序,依時間先後稱為SP1、SP2等等。後一個SP版本包括前一個版本的全部內容,所以如果你安裝了SP3就用不著安裝SP2了。在Service Pack的Readme文件中介紹了該Service Pack修改了哪些錯誤。VB有三個主要版本:學習版、專業版、企業版。企業版是功能最全的版本,當然也是最貴的版本。
Vb主頁的地址為:
msdn2.microsoft.com/zh-cn/vbasic/default.aspx
vb的下載地址為:msdn2.microsoft.com/zh-cn/vbasic/ms789072.aspx
API的意義是什麼
問 編程中經常碰到API。請問API的意義是什麼?如何知道編程中經常用到的窗口句柄、窗口類名等?
答 API是Application Programming Interface(應用編程接口)的縮寫,也就是應用程序調用系統功能的接口。Windows API主要包括由Windows系統定義的函數、消息及與之相關的數據類型。我們使用各種開發工具歸根結底都是和API打交道。但是API本身比較難掌握,所以Visual Basic提供了可視的面向對象的控件,使初學者即使不太了解API,也可以編寫Windows程序。但是Visual Basic提供的控件畢竟是有限的,不可能包括API的所有方面,所以一些復雜的功能仍然需要調用API來實現。
API定義中的&H是什麼含義
問 現在我看到一些用API函數做的例程,其中有一個語句:PUBLIC CONST LVM_FIRST = &H1000 ,該語句中&H1000代表的是什麼含義?
答 &H是16進制的表示,比如&H10等於十進制的16。
為何總提示“變量未定義”
問 下面是一個關閉Windows的小程序:
Option Explicit
Private Declare Function ExitWindowsEx Lib “user32” (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
Private Sub Form_Load()
ExitWindowsEx EWX_FORCE Or EWX_LOGOFF Or EWX_SHUTDOWN, 0
End Sub
但編譯的時候,總是提示:EWX_FORCE 變量未定義,但EWX_FORCE 是一個參數。這是為何?
答 EWX_FORCE和其他幾個參數都是Windows API中定義的常數。你使用了Option Explicit(這是個好習慣,便於發現錯誤),所以VB發現未定義的符號都會進行提示,這有助於發現拼寫錯誤和遺漏參數定義。你應該從VB的Win32api.txt中復制這幾個參數的定義。
如何保存圖片
問 我在VB的主窗體要裝入一幅事先選好的圖片,程序運行後我可以在圖片上進行修改並保存它,以備以後調用。請問怎樣辦?
答 你可以把Form或PictureBox的AutoDraw屬性設為True,進行修改後使用VB的SavePicture語句進行存盤。如:
SavePicture Picture1.Picture, “c:\test.bmp”
這種存盤的文件為.bmp文件,顏色數與當前屏幕的色彩數相同。如果你的存盤要求很高,希望控制存盤格式,只能借助於其他控件,比如ImageMan(http://www.data-tech.com下載)、Lead Tools(http://www.leadtools.com下載)等等。
“實時錯誤9下標越界”錯誤
問 我在為一數組賦值時出現如下錯誤:“實時錯誤9——下標越界”。出錯的代碼如下:
Dim inputdata() As Single
inputdata(0) = Text2(0).Text / Text2(1).Text 注釋:入學率
請問為何會出現這種錯誤?
答 VB在使用數組前必須指定數組的大小。一種辦法是在定義時確定大小,如:Dim InputData(10) As Single,另一種是采用動態數組。對於你的程序,數組聲明部分可以不用修改,而在出錯語句前加一句:ReDim InputData(10) As Single。
如何打開光盤上的數據庫
問 我在編一個VB 程序,當程序刻到光盤以後,不能使用,經過檢查發現是因為.mdb文件為只讀,程序出錯:“該數據庫文件已經被另外的一個用戶以獨占的方式打開,您不能訪問”。請問各位高手怎麼辦?可是我用Access卻可以閱讀該數據庫(只讀)。
答 如果你用Data控件使用該數據庫,將Data控件的ReadOnly屬性設為True,將Exclusive屬性設為True。如果ReadOnly屬性為False,則就出現你所見到錯誤信息。如果不將Exclusive屬性設為True,將出現Can注釋:t lock file的錯誤信息。如果你是使用OpenRecordset語句打開數據庫,Exclusive屬性對應著dbDenyWrite和dbDenyRead參數。
怎樣避免當前窗口被關閉
問 在按下右上角的關閉鍵後,怎樣避免當前窗口被關閉?
答 在按下關閉鍵後,會發生Form_Unload和Form_QueryUnload事件。這兩個事件都有個Cancel參數,如果在事件處理過程中將其設為True就可以避免窗口被關閉。對於你的問題,Form_QueryUnload事件可能更好些,因為它有一個UnloadMode參數可以區分關閉窗口的指令是用戶做出的,還是系統做出的,或者是本程序代碼產生的。
DLL的編程格式問題
問 我是第一次編寫ActiveX DLL程序,在DLL中,我只在類模塊中寫了一個函數CARD,編譯成DLL後,在另外一個程序中調用,在模塊中聲明:
Public Declare Function card_config Lib "c:\test\card.dll" (ByVal address As Integer, ByVal intermit As Integer)
在一個按鈕中寫如下代碼:
c = card_config(12,12)
運行後出現錯誤:編譯Activex DLL後,調用時出現錯誤:“實時錯誤453,找不到DLL入口點”望指教。如有可能:請詳細告之DLL的編程格式。
答 Declare語句只能用來調用標准DLL,而不能用於調用ActiveX DLL,這是你程序出錯的原因。VB無法生成標准DLL,只能生成ActiveX DLL。要調用ActiveX DLL,一般通過CreateObject語句調用,或在集成環境中選擇菜單“工程/引用”,在對話框中選擇你要調用的ActiveX DLL。這樣你就可以在程序中使用ActiveX DLL中定義的對象或函數。
怎樣啟動其他應用程序
問 怎樣在VB中啟動其他Windows應用程序,例如記事本?
答 你可以使用VB的Shell函數調用其他應用程序。如:
Shell“Notepad.exe c:\autoexec.bat”
如何打印 MSChart
問 如何打印 MSChart 控件中的內容?
答 MSChart本身沒有打印功能,所以必須先用EditCopy將圖像放在剪貼板中,然後再打印,如:
MSChart1.EditCopy
Printer.Print ″ ″
Printer.PaintPicture Clipboard.GetData(), 0, 0
Printer.EndDoc
“can′t find dll entry point”是指什麼
問 出現以下錯誤信息是什麼意思?“run-time error 注釋:453注釋: can注釋:t find dll entry point openprocess in kernel 32 ”,(我有一個定義Private Declare Function openprocess Lib “kernel32" (ByVal dwdesireaccess As Long, ByVal bInherithandle As Long, ByVal dwprocessId As Long) As Long)
答 把openprocess改為OpenProcess。因為在Win 32下,DLL中的函數名是區分大小寫的。在kernel32中只有OpenProcess函數,沒有openprocess函數。
“對象不支持該屬性或方法”錯誤
問 為什麼執行Data1.Recordset.FindFirst “PubID=” & DBCombo1.BoundText時出現“對象不支持該屬性或方法”錯誤?
答 這是因為FindFirst、FindNext、FindLast等方法不支持Table類的記錄集,但可以使用Seek方法進行查找工作。但你必須對Pubid字段建立索引。如果想使用FindFirst方法,請修改Data1的RecordsetType屬性為Dynaset。