一點通概括VB.NET基礎知識
學習VB.NET時,經常遇到的問題就是VB.NET直接的功能我們可以熟練的運用,可是間接的我們就不知道該怎么辦了。其實Windows操作系統本身就給我們準備了許多東西,VB沒有的,或許Windows有。我們當然希望少花力氣,多得效果。這里要講的內容就是 ——學會利用Windows給我們的東西:API。
#T#然而,學會一種東西是需要付出相當的努力的,API也一樣,它可以給我們帶來很大的方便,但想要掌握它,就不是使用幾個控件那么輕松的事了。所以在看這篇文章時,希望讀者可以抱一個正確的態度,就是學習編程不是為好玩,而是為使用; 不要以自己對這方面是否有興趣而看,而要為API是否能為你的程序帶來效果而看。我并不是說一切都是那么嚴肅和困難,只是API對VB來說,已經可以算高級方面的應用了,所以“認真”和“仔細”是需要的。好了,放松一點,讓我們從現在起一步步領略API的好處吧。首先我們先來回憶一下關于VB基礎知識。
1.自定義類型
VB中可以使用Type關鍵字將已有的數據類型進行組合,成為一個新的類型,該類型就稱為用戶自定義類型。如:
- Type NewType
- sName As String
- lNumber As Long
- End Type
定義了一個名為NewType的自定義類型。以后可以用Dim MyType As NewType來定義一個NewType類型的變量。
sName As String類型的變量有兩種,一種是變長,即運行時的字符串長度是可變的,另一種是定長,運行時字符串的長度是固定的。平常我們定義一個字符串變量: Dim strA As String 即定義了一個變長的字符串,但在使用API時經常要用到定長的字符串,應該這樣定義: Dim strB As String * 30,即定義了一個可容納30個字節字符的變量。
2.VB.NET基礎知識如何聲明
VB中使用API之前,需要先對API進行聲明,聲明的方法是使用Declare關鍵字,如:
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
聲明了一個名為SendMessage的API函數。許多API的聲明可以在API瀏覽器中找到,而且本文在講述一個API時也會給出聲明,更深入的知識將在以后講述。
3.VB.NET基礎知識什么是句柄
API中使用得最多的一個詞大概就是“句柄”了。如果要說得復雜些,句柄的確可以說上一大堆,不過作為VB的應用,我們可以更簡單地去理解它??梢赃@么說,句柄是Windows系統賦予內存中每一個對象,包括窗口、按鈕(其實也是一種窗口)或者文件、圖標、菜單等等所有東西的標識。所謂標識就如身份證一樣,是不會重復并且和實際對象是一一對應的。它的作用是讓Windows知道將被操作的對象是誰。許多VB控件都提供了一個長型的hWnd屬性,一般情況下,這個屬性就是這個控件的句柄,用API控制這個控件時就需要用到這個屬性了。
4.設備上下文
其實我覺得“設備上下文”這個詞讀起來很奇怪,不過就其字面來看,Device Context(DC,可不是直流電或DreamCast哦)就是這個意思,許多人也這么稱它。不過我想翻譯為“設備中介”大家應該更容易理解吧。它的作用是作為計算機設備和程序之間的中介,比如顯示器和程序之間,或者打印機和程序之間。在對這些設備操作的時候,是需要通過這個中介操作的(與句柄相似),一些控件,如 Picture,想在上面畫圖時,就要用到hDC屬性了。
5.顯式聲明與自動保存
在默認情況下,Visual Basic會把未聲明的變量認為是新變量(即使是你不小心打錯字了),這樣很容易出現錯誤,而且要找出這樣的錯誤往往很不容易。加上API的操作基本上都會涉及到系統本身,一旦出錯就有可能出現Visual Basic崩潰甚至系統崩潰。所以到Visual Basic的選項設置中選上Require Variable Declaration(需要變量聲明)。在 Enviroment(環境)頁中的When a program starts(當程序啟動時)處選上Prompt To Save Changes(提示保存)或 Save Changes(自動保存)。這樣Visual Basic會檢查變量是否已經聲明,不再允許沒有聲明的變量出現了。