1-1 認識 Visual Studio 2005 Visual Studio 2005 是一個組合套件, 它包含 Visual Basic 2005 Visual C# Visual C++ Visual J# 等各種程式語言 此外, 還有開發網頁的 Visual Web Developer,, 使用者可以用來開發 Web Windows 應用程式 資料庫和行動裝置
1-1-11 Visual Studio 2005 概觀 微軟從 2002 年推出 Visual Studio 2002 以來, 希望藉由.NET Framework 平台架構, 讓程式開發人員將撰寫的應用程式在不同的平台上執行 而 Visual Studio 2005 除了延續原有版本的架構之外, 對於開發環境 方案管理及程式的偵錯都加入新的功能 即使程式開發人員使用不同的程式語言, 也能擁有相同的 IDE 整合環境, 能透過 Web Form 來建立網頁, 並以 Windows Form 來撰寫 Windows 系統的應用程式, 此外之外,Web, Service 可處理 Http 的要求和服務
1-2-1 何謂 共通語言執行環境 所謂 共通語言執行環境 (CLR( CLR) ) 顧名思義就是提供各種程式語言一個共通的執行環境 當我們以標準的 C++ 撰寫程式時 必須經過 編譯器 (compiler( compiler) ) 將原始程式碼轉換為 目的碼 (Object( code) ) 透過連結 (Link) 呼叫其所需的函式庫, 結合成一個 可執行檔 (Executable( Executable) ) 最後利用 載入程式 (Loader) 放入記憶體中才能執行
共通語言執行環境 -- 列管模組. 若是透過 CLR,, 則會將原始程式碼編譯成 列管模組 (Managed Module),, 如下圖 :
共通語言執行環境 -- 列管模組.. 產生的列管模組, 包含 可攜式執行 (PE, Portable Executable) 檔案標頭 CLR 標頭 中繼資料 (Metadata) MSIL(Microsoft Intermediate Language) 輸出碼 皆屬於列管模組的程式碼屬於列管模組的程式碼 對於 CLR 提供的功能, 例如 : 管理程式中的記憶體 執行緒和記憶體回收機制 等均可使用 此外, 透過 CLR 的 共通型別系統 (Common Type System) 會加強型別安全 (Type Safety) 的控管機制, 如此一來, 對於程式碼的執行安全和正確率也會提昇
共通語言執行環境 -- 未列管模組 若未透過 CLR 為執行階段程式碼, 則稱為 未列管模組 (Unmanaged Module) 程式碼, 這也是 Visual C++ 2005 預設編譯方式 為了 為了讓 C++ 語言撰寫的應用程式發揮最大的效能, 編譯為 可執行檔 或是 DLL 檔案 未列管模組還包含了 COM 元件 ActiveX 介面及 Win32 API 函式等 新版的 Visual C++ 2005 編譯器也能透過 CLR 將程式碼編譯成 列管模組 來執行 意指除了可以撰寫舊版的 ATL(Active Template Library) 專案 MFC(Microsoft Foundation Classes) 專案 Win32 主控台 (Win32 Console Application) 專案之外 還可以利用 CLR 的編譯器將舊版的程式碼轉換成 列管模組 當然, 我們還可以依據需求, 讓編譯器不產生原生 x86 指令碼而是 MSIL 輸出碼 ; 利用 CLR 的編譯選項參數將程式碼編譯成混合 可驗證和純粹等不同組件
1-2-2 瞭解 Net Framework 的類別 庫 無論開發的應用程式是 Windows Form Web Form 或是 Web Service 都需要.NET Framework 提供的類別庫 為了讓不同的語言之間具有 互通性 (Interoperability),, 以及在.NET Framework 在 共通語言規範 (CLS, Common Language Specification) 要求下, 使用.NET Framework 型別 此型別可用來建置.NET 應用程式 元件和控制項 此外, 利用.NET Framework 類別庫也能實作物件導向程式設計, 包含衍生自行定義的類別 組合介面和建立抽象 (Abstract) 類別 為了建立階層架構,.NET, Framework 類別庫亦提供 名稱空間 (Namespace) 的功能
1-2-3 記憶體回收機制.NET Framework 的記憶體回收機制是用來管理應用程式記憶體的配置和釋放 通常在 CLR 記憶體中會保留一塊記憶體來供給 Managed 使用, 稱為 堆積 (Heap) 當我們在程式碼中使用 new 運算子建立物件時,CLR, 便會從 Managed 中為此物件配置記憶體 但是, 記憶體的空間有限, 為了讓 CLR 為新增加的物件配置記憶體, 必須透過記憶體的機制來釋放某些記憶體 記憶體回收機制會檢查 Managed 堆積中不再被應用程式使用的物件, 依據記憶體的配置來決定回收時機
1-33 Visual C++ 2005 的開發環境 在 Visual C++ 2005 Express 版本中, 可以建置 CLR 主控台應用程式 Win32 主控台應用程式 Windows Form 應用程式 Makefile 專案和空白專案 其中 Win32 主控台應用程式 就是利用標準 C++ 語言來建立, 所以只支援 32 位元 x86 的編譯器, 也就是 EXE 檔或 DLL 檔, 這也是.NET Framework 所支援的眾多程式語言中唯一的未列管模組 而 Windows Form 類似於 Visual Basic 的表單, 利用滑鼠的拖曳動作來加入或清除控制項 但是, Visual C++ 2005 Express 版本對於 MFC 並不支援, 使用時必須注意!
1-3-1 安裝軟體 Visual Studio Express Editions 是微軟針對初學者 學生及程式開發人員, 提供精簡 容易使用 容易學習的開發工具, 隨書附含的光碟可以取得 Visual C++ 2005 Express Edition 中文版
系統需求 Visual C++ 2005 Express Edition 版本非常適合初學者, 它也是一個免費的版本! 安裝之前, 先了解系統需求! 如下表 1-2 硬體 / 軟體處理器 記憶體 作業系統 硬碟空間 光碟機 需求 600MHz 或是更快的處理器 最少 256MB 以上 Windows XP Service Pack 2 最少 500MB CD-ROM 或 DVD-ROM 光碟機
歩驟 1: : 啟動光碟畫面 請將書附光碟置入光碟機,Visual, C++ 2055 Express Edition 會自動載入安裝精靈, 安裝步驟如下 : 直接按 下一歩 鈕
歩驟 2: : 授權合約條款 ❶ 勾選 我接受授權合約中的條款 ❷ 直接按 下一歩 鈕
步驟 3: : 勾選安裝選項 ❶ 勾選此兩個選項 ❷ 直接按 下一歩 鈕
步驟 4: : 欲安裝套件 這是安裝的套件 直接按 下一歩 鈕
步驟 5: : 安裝套件的畫面 正在安裝套件
步驟 6: : 安裝程式的完成 直接按 結束結束 鈕
安裝說明 : 步驟 3 的安裝選項會因系統環境有所不同 一般來說, 只要勾選 圖形 IDE 和 Microsoft MSDN 2005 Express 版 這二個選項即可 步驟 4 下載和安裝產品則會依據步驟 3 的選項而有所不同
1-3-2 介面說明 Visual C++ 2005 Express 版本提供一個 IDE 整合環境, 基本上包含 功能表和工具列 方案總管視窗 工具箱視窗和資料庫總管視窗 程式碼編輯視窗 程式碼定義視窗 呼叫瀏覽器視窗 輸出視窗和狀態列
認識 IDE 工作環境 啟動 Visual C++ 2005 軟體後, 首先映入眼廉的是一個 IDE 整合環境, 如下圖 : 標題列功能表列標準工具列方案總管 按下此處來改變迴紋針方向, 能隱藏工具箱工具箱視窗 啟動的畫面程式碼定義視窗狀態列
功能表. 提供 Visual C++ 2005 所有指令 不同的地方是多了一個 社群 功能表 執行此功能表下的任何指令都會開啟 Microsoft Document Explorer 視窗 我們可以透過此視窗來檢視說明文件, 或者輸入欲要查詢的問題 不過先決條件是使用者必須先連上網路, 才會執行相關指令
功能表.. 執行 社群 / 開發人員中心 指令
功能表 開啟 Microsoft Document Explorer 視窗 提供 Visual C++ Express 版的 MSDN 說明文件
工具列與工具箱 工具列 提供多種用途的圖示按鈕 畫面中只顯示 標準工具列, 提供軟體的基本操作, 例如檔案的開啟 儲存 複製和貼上等 工具箱 提供 Windows Form 的所需控制項 若是主制台應用程式, 工具箱並不會顯示相關的控制項 如果是以 Windows Form 為主的專案, 可以看到表單和控制項等相關元件
工具箱 工具箱以 Windows Form 為主
程式碼定義視窗和資料庫總管 程式碼定義視窗 是一個唯讀編輯器, 專案中定義的符號可透過此視窗來顯示 如果顯示 沒有選取定義 則表示專案中並未儲存任何的定義符號 資料庫總管 主要用來與後端的資料庫進行存取, 不過 Visual C++ 2005 Express 版本中並不支援
呼叫瀏覽器視窗 可用來搜尋函式呼叫, 然後以視窗瀏覽搜尋結果 利用這些提供的函式訊息, 可與程式編輯視窗中的原始程式碼互相對照來參考
輸出視窗 用來顯示檔案編譯的結果 全部清除全部清除 鈕用來清除視窗中的所有文字 切換自動換行切換自動換行 讓視窗中的文字能自動換行 用來輸出程式碼編譯的結果
呼叫視窗 上述這些視窗如果沒有顯示時, 可利用 檢視 功能表的各項指令來取得 在 檢視檢視 功能表中, 提供相關視窗的指令
隱藏與自動配置. Visual C++ 2005 工作環境中的視窗, 右側的工具箱和資料庫預設是隱藏, 當滑鼠滑向此處時才會顯示此視窗, 其他的方案總管和程式碼視窗預設是顯示 如果想讓所有視窗能夠自動隱藏, 其執行下列步驟 : 執行 視窗 / 自動全部隱藏 指令
隱藏與自動配置.. 滑鼠指標移向 方案總管方案總管 才會顯示 所有視窗都自動隱藏
隱藏與自動配置 如果想要還原相關視窗的預設值, 可執行下列指令 : 執行上述指令後, 這些相關的視窗就會以預設方式顯示於畫面上 執行 視窗 / 重設 指令
1-3-3 使用方案和專案 視窗右側的方案總管可以讓我們檢視專案底下的相關檔案, 這些檔案會以樹狀方式來顯示 因為尚未使用任何專案, 所以畫面上是空白 一般來說, 方案 和 專案 是有所差別 專案 是由不同的檔案來組成 ; 而在 方案 之下可以建立不同的專案, 利用 方案資料夾 來管理組織相關的專案群組 當我們建立一個新專案時, 預設方式會將此專案加入方案中, 我們透過下面的範例來建立二個空專案, 來瞭解專案和方案的關係
建立第一個新專案 :MyFirst: ❶ 啟動 Visual C++ 2005 Express ❷ 執行 檔案 / 新增 / 專案 指令
步驟 2: : 新專案的相關設定 ❶ 點建 一般一般 專案類型 ❷ 點建 空專案空專案 範本 ❸ 輸入名稱 MyFirst 依據專案名稱自動產生 ❹ 以預設路徑來儲存檔案 ❺ 系統會自動勾選此處 ❻ 按 確定確定 鈕
步驟 3: : 加入第二個專案 然後, 我們依據步驟 1 的方式執行 檔案 / 新增 / 專案 指令加入第二個專案 ToSecond ❶ 點建 一般 專案類型 ❷ 點建 空專案 範本 ❸ 輸入名稱 ToSecond ❹ 以預設路徑來儲存檔案 ❺ 選取 加入至方案 0 ❻ 按 確定確定 鈕
步驟 4: : 檢視方案和專案 這兩個空專案會存放在 MyFirst 資料夾之下 我們可以透過檔案總管來進行檢視 : MyFirst ToSecond 專案 MyFirst 方案 ( 方案資料夾 )
方案的檔案類型. 透過檔案總管, 可以看到在 MyFirst 資料夾下有兩種屬於方案的檔案類型 *.sln 和 *.suo, 主要用來儲存方案的設定, 讓方案總管以圖形介面來顯示檔案管理的所需資訊 說明如下表 : 檔案類型 *.sln *.suo 用途 Visual Studio 方案 方案使用者選項 說明 將專案 專案項目和方案項目組織後, 提供它們在磁碟上的儲存位置 每當方案開啟時, 記錄和方案有關的所有參數
方案的檔案類型.. 另一個位於 MyFirst 專案根目錄下的檔案類型是 *.ncb (no compile browser) 它是一個唯讀檔案, 讓我們在程式碼編輯視窗輸入相關文字時, 透過 IntelliSense 資訊來提供列示文字, 讓輸入的文字具備自動完成的功能 如果不小心刪除此 ncb 檔案, 只要重新開啟方案, 就會建立新的 ncb 檔
方案的檔案類型 當然, 這些建置的專案可利用方案總管視窗來檢視它們的結構, 下圖 1-4 中可以看到建置的兩個專案 方案名稱第一個專案名稱 第二個專案名稱
更改目錄設定. 當我們完成 Visual C++ 2005 Express 的安裝後, 在 我的文件 資料夾下, 會自動產生一個 Visual Studio 資料夾, 並包含其他的子資料夾 其中的 Projects 子資料夾用來存放建立的專案 ; 表示以 C/C++ 語言所開發的程式, 都儲存於此 如果不想沿用原有的預設值, 可以進行如下的步驟 :
更改目錄設定.. 修正 01-19 頁步驟 1 ❶ 執行 工具 / 選項 指令 ❷ 選取 一般一般 選項 ❸ 點選此處 鈕來變更
更改目錄設定 ❶ 查詢變更 CH01 資料夾 ❷ 按下 開啟開啟 鈕
更改目錄設定. ❶ 變更後的專案位置 ❷ 按 確定確定 鈕 我們將範例儲存目錄變更為硬碟 D
方案的關閉 執行 檔案 / 關閉方案 指令
方案的開啟. 執行 檔案 / 開啟 / 專案方案 指令
方案的開啟.. ❶ 查詢位置 MyFirst 方案資料夾 ❸ 選取 MyFirst.sln 檔案 ❷ 確認檔案類型 所有專案類型 ❹ 按 確定確定 鈕
開啟專案和檔案. 如果開啟的類型是專案時, 執行如下步驟 : ❶ 執行 檔案 / 開啟 / 專案方案 指令 ❷ 確認檔案類型 所有專案類型 ❸ 選取 ShowData.vcproj 此處選取的 ShowData.vcproj 代表是專案類型 ❹ 按 確定確定 鈕
開啟專案和檔案.. 如果是單純的檔案, 執行如下步驟 : 執行 檔案 / 開啟 / 檔案 指令
開啟專案和檔案 ❶ 確認 查詢查詢 位置 ❷ 選取 data.cpp 檔案 ❸ 按 確定確定 鈕
3/27 環境設定 對於 Visual C++ 2005 Express 版本來說, 所有的環境設定都可以利用 工具 / 選項 指令來進行設定 它包含專案和方案的路徑設定, 工作環境的使用 文字編輯器 偵錯和資料庫工具
變更起始頁. 當我們啟動 Visual C++ 2005 Express 時, 視窗的中間部份會顯示 起始頁, 如果不想顯示此畫面, 變更步驟如下 : 執行 工具 / 選項 指令
變更起始頁.. ❶ 點選 啟動啟動 ❷ 選取啟動時要顯示的畫面 ❸ 按 確定確定 鈕
變更起始頁 完成上述的步驟後, 畫面並不會立即變更! 必須等到下次啟動 Visual C++ C 2005 Express 時才會更新 預設的啟動是 顯示起始頁 ; 開啟首頁 則會在軟體啟動時載入 Visual C++.NET 首頁 ( 必須開啟網際網路的連線 ) 載入上次載入的專案 會讓軟體啟動時直接開啟上一次撰寫的專案 如果想要讓軟體啟動時自動執行開啟舊檔的交談窗, 可以選擇 顯示 [ 開啟專案 ] 對話方塊 若是設定為 顯示 [ 新增專案 ] 對話方塊, 表示軟體開啟時會直接進入建立新專案的交談窗 顯示空白環境 則是什麼動作都不執行, 啟動後會顯示灰色區塊
在程式碼中加入行號. 為了讓讀者瞭解程式碼的位置, 講解程式碼時, 我們可以在程式碼編輯視窗加入行號, 其設定步驟如下 : ❶ 執行 工具 / 選項 指令 ❷ 按下此處來展開 文字編輯器文字編輯器 選項 ❸ 選取 C/C++ ❹ 勾選 行號行號 ❺ 按 確定 鈕
在程式碼中加入行號.. 完成設定後, 在程式碼編輯視窗的左側顯示行號, 可供日後解說程式碼的對照參考, 如下圖 : 顯示的行號
1-4 重點整理.NET Framework 2.0 提供共通語言執行環境 (CLR) 和類別庫來建置 Visual Studio 的環境 程式碼如果經過 CLR 編譯器, 會產生列管模組, 它包含了中繼資料和 MISL 輸出碼 此外, 列管模組的好處是具有記憶體管理 執行緒和記憶體回收機制 為了發揮執行效能,C++, 語言是.NET Framework 中唯一未列管的程式碼 當然, 我們也可以利用 CLR 編譯器將 C++ 程式編譯為列管程式碼 在 Visual C++ 2005 Express Edition 軟體中, 方案和專案並不相同 數個檔案組成了專案, 多個專案組成了方案 有關環境參數的設定, 可透過 工具 / 選項 指令來進行參數的設定和變數 而工作環境中的相關視窗, 可利用 檢視 功能表來設定