官术网_书友最值得收藏!

3-5 Visual C++簡易使用參考

剛剛開始的時候,使用最多的工具可能是代碼編輯器,這里,我們讓讀者熟悉Visual C++代碼編輯器的功能,在第四篇會逐步教給讀者更多的高級功能。

一般的程序開發工具往往也是一個很好的編輯器,大家想想,編譯等工作往往都在IDE的后臺運行,所以,界面友好的代碼編輯器,往往容易受到程序員的喜歡。個人的體驗是,用好一個開發工具,很多文字處理工具用起來也會得心應手。

對于程序員來講,代碼編輯器的基本要求一般有:能用顏色區別關鍵字,能幫助程序員快速找到需要查看的代碼,能打印帶行號的代碼,能自動生產一些代碼就更完美了……

Visual C++的代碼編輯器提供了大量編輯功能,包括Undo/Redo、可定制的快捷鍵命令和對Win32和MFC參考的快速訪問。這些功能和其他開發工具大同小異,如果你已經非常熟悉,這部分內容可以快速瀏覽,如果Visual C++是你第一個使用的比較大型的開發工具,我覺得可以仔細學習,用其他開發工具,如Delphi等都差不多。甚至可以這樣說,這些用法和UltraEdit、Word等常規軟件都差不多。

Visual C++編輯器是Visual Studio整體的一部分,而不是一個獨立的程序,你只能從Visual Studio中訪問該編輯器。Visual C++代碼編輯器的一個很大的優點是展示了一個集成的開發環境的整體應該是什么樣子。當編譯器在源代碼中發現錯誤時,它自動把編輯器的光標設置在第一個出錯的語句上,準備讓你改正錯誤。雙擊列表中的下一個錯誤,光標就會移動到源文件中的正確位置。編輯完后,只需單擊Build(建立)工具欄上的Compile(編譯)按鈕,就可以把修訂過的文本重新提交給編譯器。Visual C++自動把新的源文件保存到磁盤上。

新建文檔

在Visual C++環境中,除了代碼編輯器,還有其他幾個編輯器。只需指出想編輯的文件類型,Visual C++將會根據文件類型自動啟動相應的編輯器。只需給出文件類型,使用者不必管具體使用哪一個工具,這是一種面向文檔的思想。如果想創建一個新文件,請單擊“File/New…”命令,Visual C++會按字母順序列出可以創建的文件類型,如圖3-15所示。

圖3-15 創建新文檔

輸入文件名,在列表中選定其類型,如Active Server Page、C/C++ Header File、C++ Source File或Text File。單擊“OK”按鈕就會發現,代碼編輯器以一個空文檔窗口的形式出現在屏幕上。此時菜單和工具欄都基本不變。

Visual C++的菜單在各種編輯器中是通用的。雖然表面的菜單和工具欄基本不變,但在內部卻因編輯的內容不同會有一些變化。對于不同的編輯器,Visual C++會自動激活可用的命令。例如,由于文本只對代碼編輯器有效。因此,Find(查找)命令在使用代碼編輯器時被激活,而呈現正常狀態;而在使用圖形編輯器時,因未被激活而呈現灰色。

Visual C++代碼編輯器支持多文檔操作,可以同時打開多個文檔。再使用New命令,可以創建另一個新文檔,系統自動默認文檔名為Text2或Cpp2。如果是滿屏顯示,則正在使用的文檔名稱顯示在屏幕頂端標題欄中。可以通過按快捷鍵【Ctrl+F6】在已打開的文檔間進行切換,也可通過從Window菜單中挑選所需的文件的名稱來實現切換。

很多程序都有以上特點,我們在設計程序、用戶的交互特點時,值得借鑒!

在Visual Studio之外編輯文本

Visual C++提供了一個功能非常強大的程序編輯器。但如果你喜歡使用另一個編輯器也可以。在環境之外的編輯器中工作,就需要更多的努力。你必須切換到編輯器,把光標移到編譯出錯的語句行,改正之后,保存文件,然后再切換回Visual C++進行重新編譯。

如果你決定用另一個代碼編輯器來編寫和維護源代碼,你應該對Visual C++環境做兩個小小的改動。首先,如果你打算長期使用另外的一個編輯器,你可能會發現從Tools菜單中通過編輯器的專用命令來運行它更為方便。通過在Tools菜單中設置一個新的命令,你可以在環境內部啟動編輯器。如果你的編輯器從命令行接受文件名,可以配置該命令,以方便編輯器在啟動時自動加載源文件。

第二個改變是對默認設置的細小改動。在另一個編輯器中打開一個文件時,通常在Visual C++中會打開同一個文件。這發生在編譯和調試代碼的過程中,因為調試器要加載源文件。當你在編輯器中改變并保存文件后,切換回Visual C++來重新編譯時,環境可以識別到打開的文件副本不再是當前的內容。默認情況下,系統會顯示消息框,它提示你從磁盤上重新加載新的文件。你的回答通常會是Yes,或者至少你不會很在意。為了防止每次你切換回Visual C++時出現這個消息,在Tools菜單中單擊Options。選中Automatic Reload Of Externally Modified Files復選項,使編輯器自動加載發生改變的文件,而不再提示你。

打開文檔

用下述辦法可打開一個已經存在的文件:

● 單擊標準工具欄中的Open(打開)按鈕。

● 按快捷鍵【Ctrl+O】。

● 選擇File下拉菜單中的Open命令。

● 選擇File下拉菜單中的Recent File(最新文件)命令,再選擇所需文件的名稱。

前三種辦法都會出現Open對話框,在該對話框中,可以通過瀏覽各個文件夾來尋找想要打開的文件。最后一種方法不需要對話框,系統自動列出最近編輯過的文件列表,稱作MRU列表,從這個列表中可以直接打開所需要的文件。

在默認情況下,MRU列表包含最近編輯過的四個文件,這四個文件并不只是代碼編輯器編輯過的,也包含其他任意一種編輯器編輯過的文件。點擊File下拉菜單,將鼠標光標放在Recent File命令行上,即可顯示MRU列表。在表中挑選文件名,即可在相應的編輯器中打開文件。

改變MRU列表

在同時對幾個文件進行操作時,使用MRU列表是很方便的。然而你會發現,即使對于一個很小的軟件項目,也需要同時對四個以上的文件進行操作。這時MRU列表就顯得有些不夠用了。Visual C++允許擴展MRU列表,以使它可容納更多的文件名。單擊Tools菜單下的Options命令,然后按左、右箭頭鍵選擇Workspace項。在標有Recent File List Contains(最新文件列表包含)的文本框中輸入新值即可。

Workspace選項還提供了另一種影響MRU列表外觀的選項。如果希望MRU列表直接出現在File菜單中,而不是隱藏在下一級命令里,只需取消Show Recently Used Items On Submenus(在子菜單上顯示最近使用的項)選項即可。

如果所需的文件不在MRU列表中。那么必須使用Open命令,Open對話框中的默認路徑是當前軟件所在的文件夾。

在選擇要打開的文件時,按下【Ctrl】鍵再單擊文件名,可以同時打開一組文件,每單擊一次就多打開一個文件。如果想取消某個已打開的文件,只需再次按下【Ctrl】鍵,同時單擊該文件名即可。選定文件后,單擊Open,即可將所有選中的文件分別打開成不同的文檔。如果想打開的文件在其目錄下是連續排列的。有一種更快的方法可以選中它們。先單擊選中的第一個文件,再按住【Shift】鍵單擊最后一個文件,這樣,在這兩個文件之間的所有文件都被選中了。如果想不要其中某個文件,只需按住【Ctrl】鍵的同時單擊該文件即可。

在Open對話框中列出的文件并不是該文件夾下的所有文件,這是由于Files Of Type(文件類型)組合框中有過濾設置。“過濾”是指只選擇一組相關的文件。例如,系統默認的C++Files過濾器將使Open對話框中只包含以c、cpp、cxx、tli、h、tlh、inl和rc為擴展名的文件。

在Open對話框中有一個Open As Read-Only(作為只讀文件打開)選項。這是一個很重要的選項,一旦它被選中,將不能對打開的文件做任何改變,而只能對其瀏覽、打印或將其復制到剪貼板上。通常使用File菜單下的Save as命令,將此只讀文檔以一個新名稱保存,就可以解除只讀限制。注意,此時原文件的只讀屬性并未改變,只是新文件中沒有了只讀限制。Visual C++還提供了一種設置,使得即使對于上面這種操作,系統也不允許進行。Tools菜單下Options對話框中Compatibility(兼容性)的選項卡下,有一個Protect Read-Only Files From Editing(阻止編輯只讀文件)選項,當它被選中后,只讀文件將不能以新名稱另存。

查看文檔

通過按上、下、左、右箭頭鍵或拉動滾動條,可以瀏覽文檔。除此之外,通過一些其他辦法可以更方便、更有效地瀏覽文檔。Windows把閃爍光標稱為提示符(或插入符),因為它的功能與用來表示可輸入新文本的I符號相似。光標一詞在Windows中仍被保留,它被用來指代表示鼠標位置的箭頭。在代碼編輯器中移動提示符的快捷鍵,對于任何一個使用過Windows字處理器的用戶來說,都是很熟悉的。表3-1列出了主要的提示符移動快捷鍵。

表3-1 提示符移動快捷鍵

為了使程序代碼顯示空間盡可能大,選擇View菜單下的Full Screen(全屏)命令,或者按快捷鍵【Ctrl+V】,即可使標題欄、菜單、工具欄都消失,以便最大限度地騰出空間。如果要返回正常顯示,只需按【Esc】鍵,或單擊浮動的Full Screen工具欄即可。

在滿屏狀態下,由于菜單欄消失,如果要使用菜單命令,可先按【Alt】鍵,再按所需菜單的首字母即可。例如,先按【Alt】鍵,再按【F】鍵,即可激活File菜單,再按左、右箭頭鍵,可激活相鄰的菜單。

代碼編輯器的文檔窗口允許多窗格顯示,可以將同一文檔的一個、兩個或四個不同部分同時顯示在窗口上。當創建或打開一個文檔時,多窗格功能自動生效。窗格分隔條最初顯示為兩個按鈕,一個位于垂直滾動條的頂端,另一個位于水平滾動條的最左端。

要想設定某個窗格分隔條的位置,只需拖動該窗格分隔條到所需位置再釋放即可。也可以通過選擇Window菜單下的Split命令,一次設定兩個窗格分隔條的位置。Split命令設定兩個窗格分隔條所決定的分割線在編輯窗口中交點的位置,移動鼠標,將此交點移到所需的位置上再單擊,即可將兩個窗格分隔條同時設定。由于各窗格沒有自己的滾動條,因此,最有效的方法是將顯示窗口劃分為一上一下兩個窗格。要想做此劃分,只需要將垂直分隔條(即位于水平滾動條上的分隔條)移到最左端或最右端,直到其消失為止。通過單擊窗格或按【F6】鍵,可從一個窗格切換到另一個窗格。

上面的兩窗格顯示對于上下劃分的文檔非常方便,但由于各窗格不能獨立滾動,因此對于左右劃分的文檔就不太有效了。Window菜單提供了另一個命令,它可以垂直視圖的方式顯示將一個文檔分成兩個或多個窗格。在代碼編輯器只打開一個文檔的情況下,單擊New Window(新窗口)命令,就會打開另一個包含同一文檔的顯示窗口。這并不是重新打開文件,只不過是在編輯器的工作空間中提供了原文檔的第二個視圖。這兩個視圖各有其滾動條及閃爍光標,這樣就可以同時瀏覽文檔的不同部分。此時,再單擊Window菜單下的Tile Vertically命令,即可使兩個瀏覽器實現左右顯示。通過單擊某個窗口,或按【F6】鍵,可實現視圖之間的切換。也可以通過New Window命令再增加視圖。盡管各視圖之間相互獨立,但它們都只能顯示同一文檔的內容。因此,在一個視圖中對文檔做的任何修改,都會立即顯示在其他視圖中。

括號匹配

Visual C++代碼編輯器可識別包圍C/C++源代碼塊的括號對,這樣,只按一次鍵,就可將插入符由一個括號處移到與此括號相對應的括號處。編輯器可區別三種不同類型的括號:小括號()、大括號{}、方括號[]。

括號通常成對使用,用于源代碼塊的兩端。每一對括號建立一個層次,并可能包含若干個次級層。下例就是一個用大括號來分層次的典型例子:

當光標在任何一個括號旁邊時,按快捷鍵【Ctrl+]】可將插入符移到與之對應的另一個括號處。按快捷鍵【Shift+Ctrl+]】可選定兩括號之間的所有文本。

編輯器也把#if,#ifdef,#else,#elif和#endif這些條件編輯指令按括號對待。不過,相應的操作鍵是不同的。當插入符位于某個條件指令旁邊時,按快捷鍵【Ctrl+J】可將它移到下一個指令旁。如果同時按下【Shift】鍵,則會在移動的同時選中這一區間的文本。

保存文檔

當開始在一個文檔窗口中輸入文本時,一個“*”符號會顯示在標題欄和Window菜單下已打開文檔表中的文檔名后。這表明此時該文檔已被改變,它和原文件已不相同。Visual C++代碼編輯器不能自動存盤,在輸入源代碼時,一定要養成定時存盤的習慣。存盤可采用以下方法:

● 單擊標準工具欄上的Save按鈕。

● 使用快捷鍵【Ctrl+S】。

● 選擇File菜單下的Save命令。

保存文件時,文件名后的“*”符號將消失。當再次改變文本時,它又將出現。定時存盤主要是針對長時間編輯一個文檔的場合。如果只是對源文件做一些小改動,再重新編譯它,存盤就不那么重要了,因為在重新編譯之前,系統會自動保存文檔。

所有的文本編輯器都一樣,第一次保存一個未命名的文檔時,會出現Save as對話框,在這個對話框中,可以給出文件名及其擴展名。請將擴展名定為CPP或C,因為代碼編輯器只能通過擴展名判斷文件內容,再依內容將其按C++或C程序編譯。如果不給出擴展名,Visual C++將自動設一個與在New對話框中選擇的文件類型相近的擴展名。例如,如果從此對話框中選擇C++ Source File(C++源文件),則新文件名的擴展名將為CPP。

頭文件的命名

對于頭文件可以使用任意擴展名,因為在創建項目時,Visual C++只根據“#include”語句來搜索源文件。無論擴展名是什么,只要被#include語句包含,它就會自動加入項目中,并顯示在Workspace窗口中的FileView選項卡下的頭文件表中。

在打開的文檔中搜索文本

和Word的搜索功能差不多,這里不用詳細講解。

有一個技巧要告訴大家,可以通過設定是否區別大小寫,或是否整詞匹配,來使搜索更為精確。單擊Match Case(區別大小寫)復選框,將設定一個區別大小寫的搜索。在這個搜索過程中,編輯器只找出與目標串完全相同的字符串。例如,對于目標串“abc”,區分大小寫的搜索只找出“abc”,而不區分大小寫的搜索則會找出“abc”、“ABC”、“Abc”等。單擊Match Whole Word Only(整詞匹配)復選框,可忽略包含于另一單詞之中的目標串。例如,對于目標串“any”,在整詞匹配搜索中,編輯器只找出以完整單詞形式出現的“any”,而忽略掉類似“company”、“many”、“anywhere”之類的單詞。

在Find對話框中,單擊Mark All(標記所有的)按鈕,即可在每一個搜索到的目標處設置一個無名書簽。當繼續使用Find命令搜索其他目標時,這種設置能夠回到前面的目標處。

Visual C++編輯器中一個有用的變化是增加了一個稱為Incremental Search(增量搜索)的命令,它使得搜索工作在輸入目標串的同時就開始進行。在一個打開的文檔中按快捷鍵【Ctrl+I】,則“Incremental Search:”就會立即出現在屏幕左下角的狀態欄中。在輸入目標串的同時,編輯器開始搜索,通常不等輸完,搜索就已完成。當編輯器找到正在尋找的字符串時,按【Enter】鍵,或一個方向鍵即可返回編輯模式。如要再次搜索同樣的目標串,按【F3】鍵或單擊適當的工具按鈕即可。按快捷鍵【Shift+Ctrl+I】可改變搜索方向,以使編輯器從插入符所在位置向前搜索。

在已打開的文檔中替換文本

如果想替換文檔中的某些字符串,可選擇“Edit/Replace(替換)…”命令。這個命令將給出一個類似于Find對話框的對話框,只不過這個對話框有兩個文本框,需要兩個字符串。第一個文本框中放置普通的目標字符串。第二個文本框中則要放置要用來替換的新字符串。如果將第二個文本框置空,則編輯器將把找到的所有目標串刪除。為了有選擇地搜索或替換,當編輯器找到目標串時,單擊Replace按鈕,系統將自動跳到下一個目標串處。單擊Find Next(查找下一個)按鈕,系統將跳過這個字符串而不改變它。單擊Replace All(全部替換)按鈕,將會一次性完成所有替換。可以只向前,或只向后搜索或替換,但不能在多個文件中搜索或替換。

如果在激活Replace對話框之前,已選中了超過一行的文本,則Selection(選擇)單選按鈕將自動打開,這表明編輯器將把搜索或替換操作限制在所選章節之中。單擊Whole File(整個文件)單選按鈕,將取消這一設置。雖然可通過在按下【Alt】鍵的同時向右下方拖動鼠標光標來選中一列字符串,但通常情況下,不能進行列的替換。如果選中一列字符串,Selection單選按鈕將不會打開。

在磁盤文件中搜索文本

給出一個目標字符串,Visual C++代碼編輯器能找出某個文件夾下所有包含目標串的文件(包括位于子文件夾內的文件)。單擊Edit菜單下的Find In Files(在文件中查找)命令,這時出現的對話框需要指定目標串、文件類型以及搜索過程所在的文件夾。

通常,默認文件夾是當前軟件所在的文件夾;如果想搜索其他文件夾,在In Folder(文件夾中)框中輸入其路徑,或單擊框旁的有三個點的按鈕,尋找所需文件夾。Look In Subfolders(在子文件夾中查找)復選框決定編輯器是否在子文件夾中進行搜索。通常其默認值為打開。單擊Advanced(高級)按鈕,可設定除子文件夾之外的其他文件夾,搜索也將在這些文件夾中進行。

如果已經設置好各項,單擊Find按鈕。當Visual C++找到一個包含所給出的目標串的文件時,它把其文件名和路徑列在Output窗口中,同時還列出此文件中第一個目標串的所在行,這便可以看到目標串在文件中是怎么用的。雙擊某個文件,可在代碼編輯器中打開它。

在進行文件搜索之前,Visual C++首先保存任何在代碼編輯器中打開而未保存的文檔,這將確保所搜索的文件都是最新版本。可通過調整Options(選項)對話框中Editor選項卡下的兩個標有“Save Before Running Tools(在運行工具之前保存)”和“Prompt Before Saving Files(在保存文件之前提示)”的復選框來改變這一屬性。關閉“Save Before Running Tools”復選框,將使Visual C++在搜索前不保存文檔,這樣會使搜索在上次保存的文檔中進行。如果希望在激活Find In Files命令之前,由自己決定是否保存文檔,則關閉這兩個選項。這將使編輯器在保存每個文檔前先征求操作者的意見。

常規表達式搜索

我們見到的搜索對話框中,一般都包含一個標有Regular Expression(常規表達式)的復選框。常規表達式是指有一個或多個特殊字符組成,用以表示一系列文本的字符或字符串。在Open和Save as對話框中,已有過類似的使用,例如,“*.CPP”表示以CPP為擴展名的任何文件。這里的星號就是一個常規表達式,它代表可組成有效文件的任何文本。

搜索中的目標字符串中所用的常規表達式則更為復雜,但是這樣有助于更為精確地控制目標字符串。表3-2列出了系統默認的常規表達式。注意,只有當搜索對話框中的Regular Expression復選框打開時,編輯器才把這些字符按常規表達式處理,否則,將把它們當作一般字符處理。

表3-2 系統默認的常規表達式

不必去刻意記這張表,簡單了解即可。在所有的Find對話框中,通過組合框旁的一個小按鈕來給出表的當前版本。單擊此按鈕,打開常規表達式菜單,然后就可以選擇所需的常規表達式了。

用加號“+”可設計一個字符串。例如,考慮常規表達式[a-zA-Z],它代表任何一個字母。如果再增加一個加號,意義就完全變了。加號的意義是“一個或多個這些字符”。因此,編輯器將[a-zA-Z]+看作為任意字符串,也就是任意一個單詞。同樣,常規表達式[0-9]代表一個數字,而[0-9]+則代表任意一個正數,無論其大小。

常規表達式搜索通常是區別大小寫的。即使關閉Find對話框中的Match Case復選框,對常規表達式[0-9a-f]+的搜索也只能找到類似于0x37ac的字符串,而不能找到0x7A4B。為了找到后者,必須將大寫字母包含在常規表達式中,例如:[0-9a-fA-F]+。

主站蜘蛛池模板: 沙湾县| 咸丰县| 泸溪县| 宿松县| 车险| 朝阳市| 咸丰县| 莱阳市| 衡阳市| 普兰县| 普兰店市| 垦利县| 武隆县| 绥德县| 陆川县| 焉耆| 东平县| 肃南| 丰镇市| 兖州市| 鄂州市| 泉州市| 海兴县| 老河口市| 江川县| 无为县| 扎囊县| 松阳县| 定西市| 南召县| 呼图壁县| 庆元县| 卫辉市| 阿合奇县| 安福县| 仁布县| 健康| 罗山县| 远安县| 五指山市| 屯昌县|