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

Windows/VB編程逐月通

編輯:VB綜合教程
第一步、走進Windows,初窺VB
  
  編者按:以前總聽別人說VB、VC、VFP的編程方法和技巧,很想寫一篇關於可視化編程的整體性介紹文章,但是操作起來的時候卻遇到了問題,我不知道該用哪種編程語言來介紹,考慮再三,最後還是決定使用易學易用的VB,VB的各種優點,我就不做過多的介紹了,我唯一想說明的是:希望大家能通過這樣的介紹學會Windows編程,而不是簡單VB編程,這就是標題為什麼起名為Windows/VB編程逐月通的原因。
  
  有一點我要聲明,我們這裡討論的是Windows編程,一切討論都以32位Windows平台即Win32為基准。如果你剛從掛在MS-DOS下的TurboC爬出來的話,那麼你有必要把腦子裡裝的某些東西扔進垃圾堆,舊思想該改一改了。所以讓我們先從Windows程序的工作方式談起吧!
  不過全面地討論Windows的內部工作機制將需要整整一本書的容量,而且這本書對於初學者來講還未必能看懂。因此現在還沒有必要深入了解所有的技術細節,這些部分將隨著學習的深入而深入。Windows的工作機制,簡單地說就是三個關鍵的概念:窗口、事件和消息。
  什麼是窗口,你千萬別告訴我是一個個的應用程序窗口。在我們討論編程時窗口是帶有邊界的矩形區域。也許你已經了解幾種不同類型的窗口:如,Windows95的“資源管理器”窗口、文字處理程序中的文檔窗口或者彈出提示有約會信息的對話框。除了這些最普通的窗口外,實際上還有許多其它類型的窗口。命令按鈕是一個窗口。圖標、文本框、選項按鈕和菜單條也都是窗口。正因為有了這麼多的窗口Window的後邊才加上了一個s。
  “MicrosoftWindows操作系統通過給每一個窗口指定一個唯一的標識號(窗口句柄或hWnd)來管理所有的窗口。操作系統連續地監視每一個窗口的活動或事件的信號。事件可以通過諸如單擊鼠標或按下按鍵的操作而產生,也可以通過程序的控制而產生,甚至可以由另一個窗口的操作而產生”。這是微軟公司對事件的定義。明白什麼意思了嗎?好了,不打官腔了。說白了,事件就是你用標點標識了什麼,敲了哪個鍵了,或者程序運行發生什麼情況了。發生了一個事件,Windows操作系統就給相應的應用程序發出一條消息。這是由操作系統自動完成的。具體怎麼做的,你管不了也管不著。
  我們要做的工作有很大一部分工作就是寫一些處理這些消息的函數。還記得怎麼用TurboC、TurboPascal、QuickBasic寫一個菜單嗎?菜單用類似於print之類的函數或語句一點一點打出來,然後再執行一個輸入,輸入的值往往是一個菜單選項,最後,根據這個輸入的值調整相應的子程序。這個過程與我們所說的消息處理過程是類似的。所不同的是Windows的應用程序隨時都可以接受消息,然後一條一條的處理。這裡有一個很典型的例子:不知道大家注意到沒有,在光驅發生“死讀”的時候,系統會發生暫時的死機,用鼠標點什麼都沒用。等盤讀過去了,剛才點的菜單都彈出來了,點的圖標也全開始運行了。Why?Because:在光驅發生“死讀”的時候,占用了很多的系統資源,所以看起來像死機一樣。假如此時,用鼠標點一個下拉菜單,系統會給處理下拉菜單的程序發一個消息,通知有鼠標在點它。但是,此時系統資源不足,菜單的處理程序無法運行。過了一會兒,光驅讀過去了,系統資源充足了,才開始進行消息處理運行下拉菜單的程序。所以,當死機時千萬別胡點,按一下alt ctrl delete,就按一下,等到彈出"關閉程序"對話框時,關閉掉那些被注上沒有響應程序。這樣,能夠釋放一些系統資源給其他程序使用,從而保證其他程序能夠繼續運行。好像這一招在WindowsNT上比在Windows95/98上靈,不過有一點是肯定的,就是死機的時候不要慌。
  看到這裡,先讓你的思想稍做整理,回想一下所說的Windows,然後准備跟著我去窺探VB。
  前面沒有看明白的話,你大可不必擔心今後的學習。相反,今後的學習會有助於對前面內容的理解。
  好了,讓我們先忘記一切的煩惱,開始一個新的話題:MicrosoftVisualBasic。我想這個快捷開發的代名詞你一定聽說過。至於VB的集成開發環境我不想多作介紹。自己打開VB看一看,就知道菜單、工具欄和各式各樣的窗口都是什麼樣子了。
  廢話少說,我們開始我們第一個Windows應用程序——HellotheWorld。第一步,在VB裡New出一個標准的EXE工程(StandardEXEProject)。那個點滿黑點的窗體就是未來你的應用程序裡的顯示的窗體。然後,在工具箱(一般在左手一邊)裡點命令按鈕畫在窗口上。這個過程就像在Windows畫板裡畫點東西似的。接下來,我們來設置窗口屬性。找到你的Properties窗口(一般在右下腳)。一定要確定當前顯示的是窗體Form1而不是命令按鈕Command1的屬性。否則,可以在屬性窗口上的下拉菜單上選一下。每選中一個屬性,都可以在這個小窗口下方看到屬性說明,這樣你就明白每個屬性都是來干什麼的了。我們現在來試著修改一下窗體的Font(字體)屬性。這時,彈出了一個字體的對話框。然後,選擇你喜歡的字體、字號、樣式。最後雙擊你剛才畫上的那個按鈕,添加代碼。看到一個文本編輯器彈出了嗎?就在光標的位置寫上form1.print"HellotheWorld"。一般來講,敲完了form1.時會出現一個下拉菜單,那是一個提示菜單,告訴你後邊寫些什麼,不過你不用管它,把剛才讓你敲的那句話敲完,就大功告成了。
  好了,現在你可以按播放鍵向全世界問好了。我們注意到程序的窗體就是我們剛才畫的那個窗體,這叫所見即所得。點一下命令按鈕,你可以看到HellotheWorld在窗體的左上角顯示出來,字體就是你剛才設置的那樣。
  在VB下開發應用程序就是這麼三步:設計界面、設置屬性、編寫代碼。《孫子兵法》裡說:始計於廟堂之上。其實編程序和對外作戰是一樣的,先要有一個總的設計,然後再由粗到細的一步一步安排細節。設計界面,不一定是個美術問題;在你設計界面時,也把你程序的功能定制好了。接著,按照你程序功能的需要,設置你各個窗體上的控件和各個窗體自身的屬性。控件可以初步理解為放在工具箱裡的東西,像命令按鈕、文本框、滾動條之類的東西。至於確切的定義我們以後再討論。
  HellotheWorld是一個典型而簡單的Windows應用程序。我們可以結合前面的內容看一看這個程序是如何運行的。在這個程序運行開始,就是帶有命令按鈕的一個窗體在等待一些事件的發生。用鼠標點命令按鈕,就激發了一個click事件,系統得知後立刻給相應的應用程序發一條消息;當應用程序檢測到這條消息,就進入相應的消息處理過程進行處理。所以我們要在PrivateSubCommand1_Click()中添加代碼。
  現在我們有必要了解一下VB的代碼編輯器。這是一個比較簡單的文本編輯器,所不同的是在編輯器的上方有並排有兩個下拉列表框。左邊是一些編程對象,右邊是左邊當前對象所能接受的消息。比如說左邊選command1,右邊選click,若Command1_Click存在,光標會自動移到Command_Click的處理函數中;若不存在,則生成一個Command1_Click的過程聲明。
  既然在這裡提到了對象這個概念,我就沒有理由簡單說一說面向對象的程序設計。首先,我們要搞清什麼是對象。“對象是類的一個實例。一個定義好的數據結構再加上定義在其上的操作稱之為類。”N多本書都用這種晦澀的語言解釋什麼是類,什麼是對象。在VB裡,類和對象的概念就很直觀了,就是在窗體上畫一個按鈕的動作,足以把這兩個概念解釋清楚。讓我們再細細品味一下這個過程:先點一下工具箱裡的command圖標,然後在窗體上一拉,就在窗體上建立了一個叫command1的命令按鈕。我們剛才的編程,全是圍繞command1進行的。那麼command1就是一個對象。它是由command生成的一個實例,command就是生成command1這個實例的類。Command的屬性正好是command的數據結構。窗體也是一個類,名字叫form,程序裡的form1是它的實例,print是定義在它上面的操作。其實,類、對象這些東西到是挺像“白馬論”中所說的。馬是一個類,白馬就是馬的一個實例,同樣還有黃馬、黑馬,所以說白馬非馬。
  哎呀,又胡扯了。第一步到此結束。以後的一段日子,我們將討論VB開發的一些方法和技巧,舉一些例程。讓你真正能做出一些較為實用的東西,至少它們可以成為一些大軟件某一部分的前體。->

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