版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
VisualStudioIDE簡(jiǎn)介VisualStudio集成開(kāi)發(fā)環(huán)境(IDE)VisualStudioIDE簡(jiǎn)介VisualStudio集成開(kāi)發(fā)環(huán)境(IDE)提供了一組工具,可幫助您編寫(xiě)和修改代碼,以及檢測(cè)和更正錯(cuò)在這些主題中,您將創(chuàng)建一個(gè)新的標(biāo)準(zhǔn)C++程序,并使用VisualStudio為C++開(kāi)發(fā)人員提供的功能測(cè)試該程序的能。您創(chuàng)建的簡(jiǎn)單程序?qū)⒏櫽卸嗌賯€(gè)玩家正在玩各種紙牌游戲本演練涵蓋以下內(nèi)演練:使用項(xiàng)目和解決方案演練:生成(C++)演練:測(cè)試(C++)演練:部署程序演練:使用項(xiàng)目和解決方案在VisualStudio中,可以將您的工作組織為項(xiàng)目和解決方案。一個(gè)解決方案可以包含多個(gè)項(xiàng)目,例如,一個(gè)DLL和個(gè)引用該 的可執(zhí)行文件。有關(guān)更多信息,請(qǐng)參見(jiàn)介紹解決方案、項(xiàng)目和項(xiàng)此演練演示如何創(chuàng)建項(xiàng)目,使用“解決方案資源管理器”向項(xiàng)目中添加文件,在文件中鍵入代碼,然后生成項(xiàng)目創(chuàng)建項(xiàng)在使用VisualStudio編寫(xiě)VisualC++程序的過(guò)程中,第一個(gè)任務(wù)是選擇項(xiàng)目的類(lèi)型。對(duì)于每種項(xiàng)目類(lèi)型,Visual創(chuàng)建項(xiàng)在“文件”菜單上指向“新建”,再單擊“項(xiàng)目”在“項(xiàng)目類(lèi)型”區(qū)域中,單擊“VisualC++”。然后,在“VisualStudio已安裝的模板”窗格中,單擊“Win32控制game鍵入項(xiàng)目名稱(chēng)。對(duì)于此示例,請(qǐng)鍵當(dāng)您創(chuàng)建項(xiàng)目時(shí),Visual接受該名稱(chēng)會(huì)將該項(xiàng)目放入一個(gè)解決方案。默認(rèn)情況下,解決方案的名稱(chēng)與項(xiàng)目名稱(chēng)相同您可以接受默認(rèn)位置、鍵入一個(gè)不同的位置或者瀏覽到要保存單擊“確定”啟動(dòng)“Win32應(yīng)用程序向?qū)А?在應(yīng)用程序向?qū)А钡摹案攀觥表?yè)上,單擊“下一步” 在“應(yīng)用程序類(lèi)型 在應(yīng)用程序向?qū)А钡摹案攀觥表?yè)上,單擊“下一步” 在“應(yīng)用程序類(lèi)型”下的“應(yīng)用程序設(shè)置”頁(yè),選擇“控制臺(tái)應(yīng)用程序”。在“附加選項(xiàng)”下選擇“空項(xiàng)目”設(shè)置。單擊“成”現(xiàn)在有了項(xiàng)目,但項(xiàng)目還沒(méi)有源代碼文件使用解決方案資源“解決方案資源管理器”可幫助您使用解決方案中的文件和其他資源在本節(jié)中,您將向項(xiàng)目中添加一個(gè)類(lèi)VisualStudio將添加.h.cpp文件。然后,為測(cè)試類(lèi)的主程序向項(xiàng)加一個(gè)新的源代碼文件向項(xiàng)目添加如果未顯示“解決方案資源管理器”,請(qǐng)?jiān)凇耙晥D”菜單上,單擊“解決方案資源管理器”在“解決方案資源管理器”中,右擊“頭文件”文件夾,指向“添加”,然后單擊“類(lèi)”在“一般C++類(lèi)向?qū)А敝?,鍵入Cardgame作為“類(lèi)名”,并接受默認(rèn)的文件名和設(shè)置。單擊“完成”對(duì)已在編輯區(qū)域中打開(kāi)的Cardgame.h文件進(jìn)行以下更在類(lèi)定義的左大括號(hào)之后添加兩個(gè)私有數(shù)據(jù)成intstaticint添加一個(gè)采用類(lèi)型為int的參數(shù)之一的公共構(gòu)造函數(shù)原Cardgame(int刪除Visual 生成的默認(rèn)構(gòu)造函數(shù)。默認(rèn)構(gòu)造函數(shù)是沒(méi)有參數(shù)的構(gòu)造函數(shù)。該默認(rèn)構(gòu)造函數(shù)類(lèi)似于在您對(duì)Cardgame.h文件進(jìn)行更改之后,該文件應(yīng)類(lèi)似#pragmaclass{intstaticinttotalparticipants;Cardgame(int#pragma行指明編譯器只包含該文件一次。有關(guān)更多信息,#pragma行指明編譯器只包含該文件一次。有關(guān)更多信息,請(qǐng)參見(jiàn)once有關(guān)此頭文件中的其他C++關(guān)鍵字的信息,請(qǐng)參見(jiàn)class(C++)、int、Static(C++)和public(C++)雙擊“源文件”文件夾Cardgame.cpp,將其打開(kāi)以進(jìn)行編輯#includeCardgame.h"之后,添加以下各行#includeusingnamespaceCardgame::Cardgame(int{players=p;cout<<p<<"playershavestartedanewgame.Therearenow<<totalparticipants<<"playersintotal."}開(kāi)始鍵入plto時(shí),可以按Ctrl+空格鍵,以便自動(dòng)完成功能將為您完成鍵入players的操在您對(duì)Cardgame.cpp文件進(jìn)行更改之后,該文件應(yīng)類(lèi)似#include#include<iostream>usingnamespacestd;Cardgame::Cardgame(int{players=p;cout<<p<<"playershavestartedanewgame.Therearenow<<totalparticipants<<"playersintotal."}{}有關(guān)#include的更多信息,請(qǐng)參見(jiàn)The#includeDirective添加現(xiàn)在,為測(cè)試}有關(guān)#include的更多信息,請(qǐng)參見(jiàn)The#includeDirective添加現(xiàn)在,為測(cè)試類(lèi)的主程序添加一個(gè)源代碼文件添加新源文在“解決方案資源管理器”中,右擊“源文件”文件夾,指向“添加”,然后單擊“新建項(xiàng)”文件(.cpp)”在testgames.cpp編輯窗口中,鍵入以下代#includeintmain(){=*bridge=*blackjack=*solitaire=*poker=bridge=blackjack=newsolitaire=newCardgame(1);deleteblackjack;deletepoker=new}有關(guān)此源文件中的C++關(guān)鍵字的信息,請(qǐng)參見(jiàn)newOperatorC++)和deleteOperator(C++)在“生成”菜單上,單擊“生成解決方案”來(lái)自生成的輸出應(yīng)顯示在“輸出”窗口中。這表示項(xiàng)目已編譯,并且未發(fā)來(lái)自生成的輸出應(yīng)顯示在“輸出”窗口中。這表示項(xiàng)目已編譯,并且未發(fā)生錯(cuò)誤。如果未顯示輸出,請(qǐng)將您的碼與前面步驟中提供的代碼進(jìn)行比較演練:生成項(xiàng)目在本步驟中,您將故意在代碼中引入一 Visual 語(yǔ)法錯(cuò)誤,以了解什么是編譯錯(cuò)誤,以及如何修復(fù)它。編譯項(xiàng)時(shí),會(huì)顯示錯(cuò)誤消息以指示所發(fā)生的問(wèn)題的性質(zhì)和位置IDE修復(fù)編譯錯(cuò)在testgames.cpp中,刪除最后一行中的分號(hào),使代碼如下所示return在“生成”菜單上,單擊“生成解決方案”“輸出”窗口中顯示一條消息,指示生成項(xiàng)目失單擊“輸出”窗口中的“轉(zhuǎn)到下一條消息”按鈕(指向右方的綠色箭頭)?!拜敵觥贝翱谥械腻e(cuò)誤消息和狀態(tài)欄區(qū)指示右大括號(hào)前缺少一個(gè)分號(hào)若要查看有關(guān)錯(cuò)誤的更多幫助信息,請(qǐng)突出顯示錯(cuò)誤,并按F1鍵將分號(hào)重新添加到導(dǎo)致語(yǔ)法錯(cuò)誤的行的末尾return在“生成”菜單上,單擊“生成解決方案”“輸出”窗口中顯示一條消息,指示項(xiàng)目已正確編譯演練:測(cè)試項(xiàng)目以“調(diào)試”模式運(yùn)行程序使您可以使用斷點(diǎn)來(lái)暫停程序,以檢查變量和對(duì)象的狀在本步驟中,您將在程序運(yùn)行時(shí)觀(guān)察變量的值,并推斷為什么值與預(yù)期的不同以“調(diào)試”模式運(yùn)行程如果“testgames.cpp”文件不可見(jiàn),請(qǐng)?jiān)诰庉媴^(qū)域中單擊該文件對(duì)應(yīng)的選項(xiàng)卡單擊以下行,將其設(shè)置為編輯器中的當(dāng)前行solitaire=new若要在該行上設(shè)置斷點(diǎn),請(qǐng)單擊“調(diào)試”菜單上的“切換斷點(diǎn)”,或者或清除若要在該行上設(shè)置斷點(diǎn),請(qǐng)單擊“調(diào)試”菜單上的“切換斷點(diǎn)”,或者或清除斷點(diǎn)F9。也可以單擊代碼行左側(cè)的區(qū)設(shè)置了斷點(diǎn)的代碼行的左側(cè)會(huì)顯示一個(gè)紅色圓在“調(diào)試”菜單上,單擊“開(kāi)始調(diào)試”,或F5當(dāng)程序運(yùn)行到包含斷點(diǎn)的行時(shí),執(zhí)行將暫時(shí)停止(因?yàn)槌绦蛱幱凇爸袛唷蹦J剑?。代碼行左側(cè)的黃色箭頭指示該是要執(zhí)行的下一個(gè)代碼行若要檢查Cardgame::totalparticipants變量的值,請(qǐng)將鼠標(biāo)指針懸停在該變量上方。該變量的名稱(chēng)及其值12顯示在工具提示窗口中右 變量。選擇“表達(dá)式:‘totalparticipants’”,并單擊“添加監(jiān)視”以在“監(jiān)視”中顯示該變量。您也可以選擇該變量并將其拖動(dòng)到“監(jiān)視”窗口在“調(diào)試”菜單上,單擊“逐過(guò)程”,或者按F10步進(jìn)到下一行代碼右擊main方法的最后一行(return0;),并單擊“運(yùn)行到光標(biāo)處”。代碼左側(cè)的黃色箭頭指向要執(zhí)行的下一個(gè)語(yǔ)0,這是因?yàn)樗械腃ardgame指針都已刪除,但是“1”窗口指示Cardgame::totalparticipants18代碼中存在一 bug,您將在下一節(jié)中檢測(cè)并修復(fù)它在“調(diào)試”菜單上,單擊“停止調(diào)試”或者按Shift-F5停止程序演練:調(diào)試項(xiàng)目在本步驟中,您將修改程序以修復(fù)在測(cè)試項(xiàng)目時(shí)發(fā)現(xiàn)的問(wèn)題修復(fù)包bug的程 在“視圖”菜單上,單擊“類(lèi)視圖”,或者單擊“解決方案資源管理器”窗口中的“類(lèi)視圖”選項(xiàng)卡展開(kāi)“游戲”項(xiàng)目樹(shù)并單擊“Cardgame”類(lèi)下方的區(qū)域顯示類(lèi)的成員和方法右擊“~Cardgame(void)”析構(gòu)函數(shù)并單擊“轉(zhuǎn)到定義”之間鍵入以下代碼totalparticipants‐=cout<<players<<"playershavefinishedtheirgame.Therearenow<<totalparticipants<<"playersintotal."}進(jìn)行更改后 文件應(yīng)如下所示#include#include<iostream>usingnamespacestd;{players=p;cout<<players<<"playershavestartedanew<<totalparticipants<<"playersintotal."}arenow{totalparticipants‐=cout<<players<<"playershavefinishedtheirgame.Therearenow<<totalparticipants<<"playersintotal."}在“生成”菜單上,單擊“生成解決方案”在“調(diào)試”菜單上,單擊“逐過(guò)程”或者按F10逐句通過(guò)程序。請(qǐng)注意,執(zhí)行每個(gè)Cardgame構(gòu)造函數(shù)后,totalparticipants的值會(huì)增大。而在刪除每個(gè)指針(并調(diào)用析構(gòu)單步執(zhí)行至程序的最后一行。恰好在執(zhí)行return語(yǔ)句之前,totalparticipants等于0。繼續(xù)逐句通過(guò)程序,到程序退出;或者,在“調(diào)試”菜單上,單擊“運(yùn)行”或F5,允許程序繼續(xù)運(yùn)行,直到退演練:部署程序現(xiàn)在,我們創(chuàng)建了應(yīng)用程序,最后一步是創(chuàng)建可供其他用戶(hù)在其計(jì)算機(jī)上安裝該程序的安裝程序。為此,我們需要將項(xiàng)目添加到現(xiàn)有解決方案。此新項(xiàng)目的輸出是setup.exe文件,該文件用于安裝我們之前在另一臺(tái)計(jì)算機(jī)上創(chuàng)建的應(yīng)程序創(chuàng)建安裝項(xiàng)目和安裝在“文件”菜單上,單擊“新建”,創(chuàng)建安裝項(xiàng)目和安裝在“文件”菜單上,單擊“新建”,再單擊“項(xiàng)目”隨即出現(xiàn)“添加新項(xiàng)目”在“已安裝的模板”“其他項(xiàng)目類(lèi)型”“安裝和部署”節(jié)點(diǎn)并單擊ulStudoInste”。添將出現(xiàn)“安裝向?qū)А薄螕簟跋乱徊健睆南驅(qū)У摹斑x擇一種項(xiàng)目類(lèi)型”窗格中,選擇“Windows應(yīng)用程序創(chuàng)建一個(gè)安裝程序”選項(xiàng),并單擊“下一步”從向?qū)У摹斑x擇要包括的項(xiàng)目輸出”窗格,選擇“主輸出來(lái)自游戲”,并單擊“下一步”繼續(xù)選擇要包括的文件下一步。完成創(chuàng)建項(xiàng)目。“解決方案資源管理器”中將列出新的gameInstaller項(xiàng)目。此項(xiàng)目將列出應(yīng)用程序依靠的依賴(lài)項(xiàng)(如 運(yùn)行或.NETFramework)以及安裝程序中將包括的項(xiàng)目文件創(chuàng)建安裝項(xiàng)目后,有許多選項(xiàng)可以更改。有關(guān)更多信息,請(qǐng)參見(jiàn)VisualStudio部署通過(guò)在“解決方案資源管理器”中選擇安裝程序并從“生成”菜單單擊“生gameInstaller”來(lái)生成安裝程序找到上一節(jié)創(chuàng)建的setup.exe和gameInstaller.msi程序。在計(jì)算機(jī)上雙擊任一文件安裝創(chuàng)建命令行應(yīng)用程序我們已經(jīng)學(xué)VisualStudioIDE,現(xiàn)在可以開(kāi)始使用VisualC++編寫(xiě)程序了。我們將學(xué)習(xí)創(chuàng)建的第一個(gè)應(yīng)用程序類(lèi)型是命令行應(yīng)用程序。命令行應(yīng)用程序不包含圖形用戶(hù)界面(GUI)。通常,命令行應(yīng)用程序從控制臺(tái)讀取輸入,并將輸出寫(xiě)入該控制臺(tái),而不是寫(xiě)入圖形++程序。如果您希望使用Visual 創(chuàng)建在其他操作系統(tǒng)上使用的應(yīng)用程序,這將很有用演練:創(chuàng)建C++可以使用VisualC2010VisualStudio集成開(kāi)發(fā)環(huán)(IDE)中創(chuàng)建標(biāo)準(zhǔn)C++程序。通過(guò)采用此演練中的步驟,您可以創(chuàng)建一個(gè)項(xiàng)目,向該項(xiàng)目添加一個(gè)新文件,修改該文件以添加C代碼,然后使用VisualStudio編譯并運(yùn)行程序您可以鍵入自己 程序,或者使用示例程序之一。此演練中的示例程序是一個(gè)控制臺(tái)應(yīng)用程序。此應(yīng)用程序使標(biāo)準(zhǔn)模(STL)中的set容器VisualC++使用2003C++標(biāo)準(zhǔn)進(jìn)行編譯,但有以下幾點(diǎn)主要例外之處:兩階段名稱(chēng)查找、異常規(guī)范和導(dǎo)出。此VisualC++支持若干C++0x功能,例如,lambda、自動(dòng)、static_assert、rvalue引用extern模板創(chuàng)建項(xiàng)目并添加源文通過(guò)以下方式創(chuàng)建一個(gè)項(xiàng)目:指向“文件”菜單上創(chuàng)建項(xiàng)目并添加源文通過(guò)以下方式創(chuàng)建一個(gè)項(xiàng)目:指向“文件”菜單上的“新建”,然后單擊“項(xiàng)目”在“VisualC++”項(xiàng)目類(lèi)型窗格中,單擊“Win32”,然后單擊“Win32控制臺(tái)應(yīng)用程序”。默認(rèn)情況下,包含項(xiàng)目的解決方案與項(xiàng)目同名,但您可以鍵入其他名稱(chēng)。您也可以為項(xiàng)目鍵入其他位置單擊“確定”創(chuàng)建項(xiàng)在應(yīng)用程序向?qū)А敝?,單擊“下一步”,選擇“空項(xiàng)目”,然后單擊“完成”如果未顯示“解決方案資源管理器視圖解決方案資源管理器。 在“解決方案資源管理器”中,右擊“源文件”文件夾,指向“添加”,然后單擊“新建項(xiàng)” 在“代碼”節(jié)點(diǎn)中單擊文件(.cpp)”,為文件鍵入名稱(chēng),然后單擊“添加”該.cpp文件即顯示在“解決方案資源管理器”中的“源文件”文件夾中,并且文件將在VisualStudio編輯器中開(kāi)在編輯器內(nèi)的文件中,鍵入使用標(biāo)準(zhǔn)C++庫(kù)的有效C++程序,或者復(fù)制示例程序之一并將其粘貼在文件中例如,您可以使用 Samples)示例程序,該程序是幫助中附帶的標(biāo)準(zhǔn)模板庫(kù)示例之一如果使用該示例程序usingnamespacestd;指令。此指令使程序能夠使用coutendl,而無(wú)定名(std::coutstd::endl)保存該文件在“生成”菜單上,單擊“生成解決方案”“輸出”窗口顯示有關(guān)編譯過(guò)程的信息,例如,生成日志的位置,以及指示生成狀態(tài)的消在“調(diào)試”菜單上,單擊“開(kāi)始執(zhí)行(不調(diào)試)”如果使用了示例程序,將顯示一個(gè)命令窗口,其中顯示是否在集合中找到了演練:在命令行上編譯C++VisualC++包括一個(gè)C++編譯器,可用來(lái)創(chuàng)建從基本VisualC++程序到Windows窗體應(yīng)用程序和組件的各種程通過(guò)按此演練的過(guò)程進(jìn)行操作,您可以通過(guò)使用文本編輯器創(chuàng)建基本 Visual譯程序,然后在命令行上對(duì)其進(jìn)也可VisualStudio集成開(kāi)發(fā)環(huán)(IDE)創(chuàng)建VisualC++程序。有關(guān)更多信息,請(qǐng)參見(jiàn)演練:在Studio中編譯面向CLRC++(C++)代碼示例程序VisualC++源文件并在命令行上對(duì)其進(jìn)行打開(kāi)“VisualStudio2010命令提示”窗口,方法是單擊“開(kāi)始”,指向“所有程序”、“MicrosoftVisual2010”、“VisualStudio工具”,然后單擊“VisualStudio2010命令提示”可能需要管理員憑據(jù)才能成功編譯此演練中的代碼,具體情況視計(jì)算機(jī)的操作系統(tǒng)和配置而定。若要以身份運(yùn)行“VisualStudio2010命令提示”窗口,請(qǐng)右擊“VisualStudio2010命令提示”,然后單擊“以管理員在命令提示符下,鍵入notepadbasic.cpp,并按Enter在系統(tǒng)提示是否創(chuàng)建文件時(shí),單擊“是”在記事本中,鍵入下列各行#includeint{std::cout<<"ThisisanativeC++return0;}program."<<在“文件”菜單上,單擊“保存”這樣就創(chuàng)建了一個(gè)VisualC++源文件關(guān)閉記事本在命令提示符下,鍵入cl/EHscbasic.cpp,并按Enter。/EHsc命令行選項(xiàng)指示編譯器啟用C++異常處理。關(guān)更多信息,請(qǐng)參見(jiàn)/EH(異常處理模型)cl.exe編譯器將生成basic.exe的可執(zhí)行程序您可以在編譯器顯示的多行輸出信息中看到可執(zhí)行程序的名若要查看目錄中具有名稱(chēng)basic以及任何文件擴(kuò)展名的文件的列表,請(qǐng)鍵入dirbasic.*并按Enter 文件是一個(gè)中間格式文件,可以安全地忽略它若要運(yùn)行basic.exe程序,請(qǐng)鍵入basic并按Enter該程序顯示以下文本并退出ThisisanativeC++ 若要關(guān)閉“VisualStudio2010命ThisisanativeC++ 若要關(guān)閉“VisualStudio2010命令提示”窗口,請(qǐng)鍵入exit并按Enter編譯使用.NET類(lèi)的VisualC++程下面的步驟演示如.NETFramework類(lèi)的VisualC++您必須使用/clr(公共語(yǔ)言運(yùn)行時(shí)編譯編譯器選項(xiàng),因?yàn)榇顺绦蚴褂?NET類(lèi)并且必須包括必要的.NET庫(kù)。Visual編譯器生成的.exe文件MSIL代碼,而不是可由計(jì)算機(jī)執(zhí)行的指按照本過(guò)程中的步驟編譯幫助主題中的任何VisualC++示例程序在命令行上VisualC++NET控制臺(tái)應(yīng)用程打開(kāi)“VisualStudio2010命令提示”窗口,方法是單擊“開(kāi)始”,指向“所有程序”、“MicrosoftVisual2010”、“VisualStudio工具”,然后單擊“VisualStudio2010命令提示”可能需要管理員憑據(jù)才能成功編譯此演練中的代碼,具體情況視計(jì)算機(jī)的操作系統(tǒng)和配置而定。若要以身份運(yùn)行“VisualStudio2010命令提示”窗口,請(qǐng)右擊“VisualStudio2010命令提示”,然后單擊“以管理員在命令提示符下,鍵入notepadbasicclr.cpp,并按Enter在系統(tǒng)提示是否創(chuàng)建文件時(shí),單擊“是”在記事本中,鍵入下列各行int{System::Console::WriteLine("ThisisaVisualC++}在“文件”菜單上,單擊“保存”您已經(jīng)創(chuàng)建了一個(gè)使用.NET(Console)VisualC++源文件,該文件位于System命名空關(guān)閉記事本在命令提示符下,鍵入clclrbasicclr.cpp,并按Enter。cl.exe編譯器將生成一個(gè)名為basicclr.exe的可執(zhí)行若要查看目錄中具有basicclr以及任何文件擴(kuò)展名的文件的列表,請(qǐng)鍵入dirbasicclr.*并按Enter 文件是一個(gè)中間格式文件,可以安全地忽略它.manifest文件是包含有關(guān)程序XML文件。(程序集是.NET部署單元.exe程序.manifest文件是包含有關(guān)程序XML文件。(程序集是.NET部署單元.exe程序或.dll件或庫(kù)。 若要運(yùn)行basicclr.exe程序,請(qǐng)鍵入basicclr并按Enter該程序顯示以下文本并退出ThisisaVisualC++ 若要關(guān)閉“VisualStudio2010命令提示”窗口,請(qǐng)鍵入exit并按Enter演練VisualStudio中編譯面CLRC++通過(guò)使用VisualStudio開(kāi)發(fā)環(huán)境,您可以創(chuàng)建使用.NET類(lèi)VisualC++程序,并對(duì)它們進(jìn)行編譯在本過(guò)程中,您可以鍵入自己 Visual程序,也可以使用示例程序之一。本過(guò)程中使用的示例程序創(chuàng)建一個(gè)的文本文件,并將其保存到項(xiàng)目目錄中VisualStudio中創(chuàng)建新項(xiàng)目并添加新的在“VisualC++項(xiàng)目類(lèi)型”中單擊“CLR”,然后單擊“CLR空項(xiàng)目”。鍵入項(xiàng)目名稱(chēng)默認(rèn)情況下,包含項(xiàng)目的解決方案與新項(xiàng)目同名,當(dāng)然,您也可以鍵入其他名稱(chēng)。如果愿意,您可以為入一個(gè)不同的位置單擊“確定”創(chuàng)建新項(xiàng)目如果“解決方案資源管理器”不可見(jiàn),請(qǐng)單擊“視圖”菜單上的“解決方案資源管理器”向該項(xiàng)目添加新的源文件在解決方案資源管理器中右擊“源文件”文件夾,指向“添加”并單擊“新建項(xiàng)...”單擊文件(.cpp)”,鍵入一個(gè)文件名,然后單擊“添加”該文件即顯示在“解決方案資源管理器”中的“源文件”文件夾中,并且,在鍵入要包含在該文件中的代碼位置,出現(xiàn)一個(gè)選項(xiàng)卡式窗口在VisualStudio中,在新創(chuàng)建的選項(xiàng)卡中單擊并鍵入有效的VisualC++程序,或者復(fù)制并粘貼示例程序之一例如,您可以使用如何:編寫(xiě)文本文件示例程序(位于“編程指南”中的“文件處節(jié)點(diǎn))如果要使用示例程序,請(qǐng)注意在創(chuàng)建.NET對(duì)象時(shí),您可以使用gcnew關(guān)鍵字(而非new),且gcnew返一個(gè)句柄(^)而不StreamWriter^sw=gcnew有關(guān)新VisualC++語(yǔ)法的更多信息,請(qǐng)參見(jiàn)LanguageFeaturesfor有關(guān)新VisualC++語(yǔ)法的更多信息,請(qǐng)參見(jiàn)LanguageFeaturesforTargetingtheCLR在“生成”菜單上,單擊“生成解決方案”“輸出”窗口顯示有關(guān)編譯過(guò)程的信息,如生成日志的位置,以及指示生成狀態(tài)的消息如果進(jìn)行了更改,并在未執(zhí)行生成的情況下運(yùn)行該程序,則對(duì)話(huà)框可能指示該項(xiàng)目已過(guò)期。如果要 Studio始終使用文件的當(dāng)前版本,并且在每次生成應(yīng)用程序時(shí)不發(fā)出提示,請(qǐng)?jiān)趩螕簟按_定”之前選中此對(duì)話(huà)框在“調(diào)試”菜單上,單擊“開(kāi)始執(zhí)行(不調(diào)試)”文本文件現(xiàn)在位于您的項(xiàng)目目錄中。您可以使用記事本打開(kāi)此文件演練:編C程VisualC2010中包括C編譯器,可用來(lái)創(chuàng)建從基本的C程序到WindowsAPI應(yīng)用程序的此演練演示如何使用文本編輯器創(chuàng)建一個(gè)基本 程序,然后在命令行上對(duì)其進(jìn)行編您可以使用自己的C程序,而不是鍵入此演練中所示的示例程序。也可以使用幫助主題中包含的任何C代碼示默認(rèn)情況下,VisualC++編譯器將以.c結(jié)尾的所有文件視為C源代將以.cpp結(jié)尾的所有文件視為C++源代碼若要強(qiáng)制編譯器將所有文件視 C(而不管文件擴(kuò)展名如何),請(qǐng)使用/Tc編譯器選項(xiàng)C源文件并在命令行上對(duì)其進(jìn) 單擊“開(kāi)始”,指向“所有程序”、“MicrosoftVisualStudio2010”和“VisualStudio工具”,然后單擊Studio2010命令提示”根據(jù)計(jì)算機(jī)上的Windows版本和系統(tǒng)安全配置,可能必須右擊“VisualStudio2008命令提示”,然后單擊“管理員身份運(yùn)行”,才能成功運(yùn)行按下列步驟創(chuàng)建的應(yīng)用程序說(shuō)“VisualStudio2010命令提示”會(huì)自動(dòng)設(shè)置C編譯器和所需的任何庫(kù)的正確路徑。應(yīng)使用它而不是使用普通的“命令提說(shuō)選擇空 項(xiàng)目模板會(huì)自動(dòng)設(shè)置/clr編譯器選項(xiàng)。若要驗(yàn)證這一點(diǎn),請(qǐng)?jiān)凇敖鉀Q方案資源管理器”中右擊該項(xiàng)目,再單“屬性”,然后選中“配置屬性”的“常規(guī)”節(jié)點(diǎn)中的“公共語(yǔ)言運(yùn)行時(shí)支持”在命令提示符下,鍵入notepadsimple.c,并按Enter在系統(tǒng)提示是否創(chuàng)建文件時(shí),單在命令提示符下,鍵入notepadsimple.c,并按Enter在系統(tǒng)提示是否創(chuàng)建文件時(shí),單擊“是”在記事本中,鍵入下列各行#includeint{printf("ThisisanativeCprogram.\n");return0;}在“文件”菜單上,單擊“保存”,以創(chuàng)建C源文件。在命令提示符下,鍵入clsimple.c,并按Entercl.exe編譯器將生成一個(gè)可執(zhí)行程序Simple.exe您可以在編譯器顯示的多行輸出信息中看到可執(zhí)行程序的名32‐bitC/C++OptimizingMicrosoftCorporation.AllrightsIncrementalLinkerVersion10.00MicrosoftCorporation.AllVersion16.00for若要查看\simple\目錄中的所有文件的列表,請(qǐng)鍵入dirsimple.*并按Enter文件是一個(gè)中間格式文件,可以安全地忽略它若要運(yùn)行Simple.exe,請(qǐng)鍵入simple并按Enter該程序顯示以下文本并退出ThisisanativeC若要關(guān)閉命令提示符窗口,請(qǐng)鍵入exit并按Enter創(chuàng)建Windows應(yīng)用現(xiàn)在VisualStudioIDE和命令行應(yīng)用程序,下面將學(xué)習(xí)如何創(chuàng)建Windows應(yīng)用程序。使用Visual可以通過(guò)使用多種不同的技術(shù)來(lái)創(chuàng)建Windows應(yīng)用程序,如WindowsAPI(也稱(chēng)為Win32API)和.NETFramework在本節(jié)中,我們將通過(guò)使用Win32API.NETFramework創(chuàng)建兩個(gè)簡(jiǎn)單的Windows在本節(jié)中,我們將通過(guò)使用Win32API.NETFramework創(chuàng)建兩個(gè)簡(jiǎn)單的Windows應(yīng)用程序。我們還將通.NETFramework創(chuàng)建Windows窗體控件,最后將通過(guò)DirectX創(chuàng)建一個(gè)簡(jiǎn)單的游戲創(chuàng)建Win32應(yīng)用程序I在WindowsAPI中可以找到有關(guān)此API的大量文檔在本過(guò)程中,我們將創(chuàng)建向窗口顯示“Hello,World!”的簡(jiǎn)單Win32應(yīng)用程序。過(guò)程中的步驟對(duì)于所有Win32應(yīng)用程都是相同的。完成此過(guò)程后,您可以將這里創(chuàng)建的代碼用作創(chuàng)建任何其 應(yīng)用程序的主干創(chuàng)建新Win32項(xiàng)在“文件”菜單上,單擊“新建”,然后單擊“項(xiàng)目...”在“項(xiàng)目類(lèi)型”窗格中,選擇“VisualC++”節(jié)點(diǎn)中的“Win32”,然后在“模板”窗格中選擇項(xiàng)目”鍵入項(xiàng)目的名稱(chēng), win32app。您可以接受默認(rèn)位置、鍵入一個(gè)位置或者導(dǎo)航到要保存項(xiàng)目的目錄在應(yīng)用程序向?qū)А敝?,選擇“下一步” 文件(.cpp)”為文件鍵入一個(gè)名稱(chēng), GT_HelloWorldWin32.cpp,并單擊“添加”Win32應(yīng)用程 正如您所了解的,每個(gè)CC++應(yīng)用程序main函數(shù)。此函數(shù)是應(yīng)用程序的起始點(diǎn)在Win32應(yīng)用程序中,每個(gè)應(yīng)用程序必須具有一個(gè)WinMain函數(shù)。WinMain的語(yǔ)法如intWINAPIWinMain(HINSTANCELPSTRlpCmdLine,int有關(guān)此函數(shù)的參數(shù)和返回值的解釋?zhuān)?qǐng)參見(jiàn)函數(shù)因?yàn)閼?yīng)用程序代碼必須使用現(xiàn)有的定義,所以應(yīng)語(yǔ)句添加到文件中以使用它們外,每個(gè)Win32應(yīng)用程序還必須具有第二個(gè)函數(shù)(通常稱(chēng)為WndProc),它代表窗口過(guò)WndProc的語(yǔ)法如下所示LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,此函數(shù)的用途是處理應(yīng)用程序從操作系統(tǒng)LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,此函數(shù)的用途是處理應(yīng)用程序從操作系統(tǒng)接收的任何消息。應(yīng)用程序何時(shí)從操作系統(tǒng)接收消息?始終接知道某位用戶(hù)按下了此按鈕。WndProc函數(shù)負(fù)責(zé)響應(yīng)該事件。在本示例中,適當(dāng)?shù)捻憫?yīng)可能是關(guān)閉對(duì)話(huà)框有關(guān)更多信息,請(qǐng)參見(jiàn)窗口過(guò)程WinMain添加功首先,在WinMain函數(shù)內(nèi)部創(chuàng)建WNDCLASSEX類(lèi)型的窗口類(lèi)結(jié)構(gòu)結(jié)構(gòu)包含有關(guān)窗口的信息,如應(yīng)用程序圖標(biāo)窗口的背景色、在標(biāo)題欄中顯示的名稱(chēng)、窗口過(guò)程函數(shù)的名稱(chēng)等等。典型的WNDCLASSEX結(jié)構(gòu)如WNDCLASSEXwcex.cbSize==CS_HREDRAW|=====LoadIcon(hInstance,=LoadCursor(NULL,==LoadIcon(wcex.hInstance,=wcex.lpszClassName=有關(guān)此結(jié)構(gòu)的字段解釋?zhuān)?qǐng)參見(jiàn)WNDCLASSEX現(xiàn)在已經(jīng)創(chuàng)建了窗口類(lèi),接下來(lái)您必須注冊(cè)它。使用RegisterClassEx函數(shù),并將窗口類(lèi)結(jié)構(gòu)作為參數(shù)傳if{_T("CalltoRegisterClassEx_T("Win32GuidedTour"),return}現(xiàn)在已經(jīng)注冊(cè)了您自己的類(lèi),接下來(lái)創(chuàng)建窗口。使用CreateWindow函數(shù),如下所示TCHARszWindowClass[]=TCHARszTitle[]=_T("Win32TCHARszWindowClass[]=TCHARszTitle[]=_T("Win32GuidedTourparameterstointhetitleszWindowClass:thenameofszTitle:thetextthatWS_OVERLAPPEDWINDOW:thetypeofwindowtoCW_USEDEFAULT,CW_USEDEFAULT:initialposition(x,500,100:initialsize(width,length)NULL:theparentofthisNULL:thisapplicationdowsnothaveamenubarhInstance:thefirstparameterfromWinMainNULL:notusedinthisapplicationHWNDhWnd=500,100,if{_T("CalltoCreateWindow_T("Win32GuidedTour"),return}此函數(shù)返 HWND,它是某個(gè)窗口的句柄。有關(guān)更多信息,請(qǐng)參見(jiàn)數(shù)據(jù)類(lèi)型創(chuàng)建了窗口后,我們可以使用以下代碼將其顯示在屏幕上//TheparameterstoShowWindow//hWnd:thevaluereturnedfrom//nCmdShow:thefourthparameterfromWinMain到目前為止,此窗口還不會(huì)顯示,因?yàn)槲覀兩形磳?shí)現(xiàn)WndProc的最后一步是消息循環(huán)。此循環(huán)的用途是偵聽(tīng)操作系統(tǒng)發(fā)送的最后一步是消息循環(huán)。此循環(huán)的用途是偵聽(tīng)操作系統(tǒng)發(fā)送的消息。應(yīng)用程序收到消息后,將調(diào)度到WndProc函數(shù),以便進(jìn)行處理。消息循環(huán)類(lèi)似于MSGwhile(GetMessage(&msg,NULL,0,{}return(int)有關(guān)消息循環(huán)中使用的結(jié)構(gòu)和函數(shù)的更多信息,請(qǐng)參見(jiàn)MSGGetMessageTranslateMessage和DispatchMessage您剛才完成的步驟為大多數(shù)Win32應(yīng)用程序所共用。有關(guān)此應(yīng)用程序所需要的include指令和全局變量聲明請(qǐng)參見(jiàn)本主題末尾的完整代碼示例此時(shí),WinMain函數(shù)應(yīng)該與下面的內(nèi)容類(lèi)似intWINAPIWinMain(HINSTANCELPSTRlpCmdLine,int{WNDCLASSEXwcex.cbSize==CS_HREDRAW|=====LoadIcon(hInstance,=LoadCursor(NULL,==LoadIcon(wcex.hInstance,=wcex.lpszClassName=if{_T("CalltoRegisterClassEx_T("Win32Guidedreturn}hInst=_T("Win32Guidedreturn}hInst=hInstance;//StoreinstancehandleinourTheparameterstoszWindowClass:thenameoftheszTitle:thetextthatinthetitleWS_OVERLAPPEDWINDOW:thetypeofwindowtoCW_USEDEFAULT,CW_USEDEFAULT:initialposition(x,500,100:initialsize(width,length)NULL:theparentofthisNULL:thisapplicationdowsnothaveamenubarhInstance:thefirstparameterfromWinMainNULL:notusedinthisapplicationHWNDhWnd=500,100,if{_T("CalltoCreateWindow_T("Win32GuidedTour"),return}//TheparameterstoShowWindow//hWnd:thevaluereturnedfrom//nCmdShow:thefourthparameterfromWinMain//MainmessageMSGwhile(GetMessage(&msg,//MainmessageMSGwhile(GetMessage(&msg,NULL,0,{}return(int)}WndProc添加功WndProc函數(shù)的用途是處理應(yīng)用程序接收的消息。通常使用 函數(shù)實(shí)現(xiàn)此操作我們將處理的第一個(gè)消息是WM_PAINT消息。當(dāng)必須更新應(yīng)用程序窗口的一部分時(shí),應(yīng)用程序會(huì)收到此消息次創(chuàng)建窗口時(shí),必須更新整個(gè)窗口,并傳遞此消息以指示此操作當(dāng)處理WM_PAINT消息時(shí),首先應(yīng)做的是調(diào)用BeginPaint,最后應(yīng)做的是調(diào)用EndPaint。在這兩個(gè)函數(shù)調(diào)用間,您可以處理所有的邏輯,以在窗口中排列文本、按鈕和其他控件。對(duì)于此應(yīng)用程序,我們?cè)诖翱谥蟹甒orld!”。若要顯示文本,請(qǐng)使用TextOut函數(shù),如下所示PAINTSTRUCTHDCTCHARgreeting[]=_T("Hello,switch{casehdc=BeginPaint(hWnd,//Hereyourapplicationislaidout.//Forthisintroduction,weustprintout"Hello,//inthetopleftcorner.TextOut(hdc,5,5,greeting,//Endapplication‐specificlayoutsection.EndPaint(hWnd,&ps);}應(yīng)用程序通常會(huì)處理許多其他消息,如WM_CREATE和WM_DESTROY。一個(gè)簡(jiǎn)單而完整的WndProc函數(shù)如LRESULTCALLBACKWndProc(HWNDhWnd,UINTmessage,WPARAMLRESULTCALLBACKWndProc(HWNDhWnd,UINTmessage,WPARAMwParam,M{PAINTSTRUCTHDCTCHARgreeting[]=_T("Hello,switch{casehdc=BeginPaint(hWnd,//Hereyourapplicationislaidout.//Forthiswejustprintout"Hello,//inthetopleftcorner.TextOut(hdc,5,5,greeting,//EndapplicationspecificlayoutcaseWM_DESTROY:returnDefWindowProc(hWnd,message,wParam,lParam);}return}示說(shuō)生成菜單選擇生成解決方案5“Heo,orld!”的簡(jiǎn)單窗口代////compilewith:/D_UNICODE/DUNICODE/DWIN32/D_WINDOWS#includeGlobalThemainwindowclassname.staticTCHARszWindowClass[]=GlobalThemainwindowclassname.staticTCHARszWindowClass[]=Thestringthatappearsintheapplication'stitlebar.static_T("Win32GuidedTourle[]HINSTANCE//ForwarddeclarationsoffunctionsincludedinthiscodeLRESULTCALLBACKWndProc(HWND,UINT,WPARAM,intWINAPIWinMain(HINSTANCELPSTRlpCmdLine,int{staticTCHARszWindowClass[]=staticTCHARszTitle[]=_T("Win32GuidedTourWNDCLASSEXwcex.cbSize==CS_HREDRAW|=====LoadIcon(hInstance,=LoadCursor(NULL,==LoadIcon(wcex.hInstance,=wcex.lpszClassName=if{_T("CalltoRegisterClassExreturn_T("CalltoRegisterClassExreturn}hInst=hInstance;//StoreinstancehandleinourTheparameterstoszWindowClass:thenameoftheszTitle:thetextthatinthetitleWS_OVERLAPPEDWINDOW:thetypeofwindowtoCW_USEDEFAULT,CW_USEDEFAULT:initialposition(x,500,100:initialsize(width,length)NULL:theparentofthisNULL:thisapplicationdoesnothaveamenubarhInstance:thefirstparameterfromWinMainNULL:notusedinthisapplicationHWNDhWnd=500,100,if{_T("CalltoCreateWindow_T("Win32GuidedTour"),return}TheparameterstoShowWindowhWnd:thevaluereturnedfromCreateWindownCmdShow:thefourthparameterfrom//MainmessageMSG//MainmessageMSGwhile(GetMessage(&msg,NULL,0,{}return(int)}WndProc(HWND,UINT,WPARAM,Processesmessagesforthemain‐PaintthemainWM_DESTROY‐postaquitmessageandLRESULTCALLBACKWndProc(HWNDhWnd,UINTmessage,{PAINTSTRUCTHDCTCHARgreeting[]=_T("Hello,wParam,LPARAMswitch{casehdc=BeginPaint(hWnd,//Hereyourapplicationislaidout.//Forthisintroduction,westprintout"Hello,//inthetopleftcorner.5,greeting,//Endapplication‐specificlayoutsection.EndPaint(hWnd,casereturnDefWindowProc(hWnd,message,wParam,lParam);}return}returnDefWindowProc(hWnd,message,wParam,lParam);}return}通過(guò).NETFramework創(chuàng)建Windows窗體應(yīng)用使用Visual并無(wú)不同開(kāi)發(fā)Windows窗體項(xiàng)目,通常與使用任.NET語(yǔ)言(如VisualBasicVisualC#)進(jìn)行使用VisualC++編寫(xiě)Windows窗體應(yīng)用程序通過(guò)新的VisualC++語(yǔ)法使用.NETFramework類(lèi)和其他.NET在本過(guò)程中,您將使用工具箱中的幾種標(biāo)準(zhǔn)控件創(chuàng) 個(gè)日期,此時(shí)將出現(xiàn)一個(gè)文本標(biāo)簽,顯示用戶(hù)選擇的日期窗體應(yīng)用程序。用戶(hù)可以在完成后的應(yīng)用程序中選創(chuàng)建新的Windows窗體項(xiàng)在“文件”菜單上,單擊“新建”,然后單擊“項(xiàng)目”在“項(xiàng)目類(lèi)型”窗格中,選擇“VisualC++”節(jié)點(diǎn)中的“CLR”,然后在“模板”窗格中選擇窗體應(yīng)用程序”鍵入項(xiàng)目的名稱(chēng),如“winformsapp”。您可以接受默認(rèn)位置、鍵入一個(gè)位置或者導(dǎo)航到要保存項(xiàng)目的目隨即打開(kāi) 窗體設(shè)計(jì)器,顯示所創(chuàng)建項(xiàng)目的“Form1”,如下所示向窗體添加控如果看不到“工具箱”窗口,請(qǐng)?jiān)凇耙晥D”菜單上單擊“工具箱”將“工具箱”中的三個(gè)控件放到“Form1”設(shè)計(jì)圖面上將一個(gè)Button控件拖動(dòng)到窗體底部靠近中心點(diǎn)的位置窗體應(yīng)該與下面的內(nèi)容類(lèi)似設(shè)置窗體和控件的屬單擊窗體圖面上的空白區(qū)域以選擇窗體如果沒(méi)有顯示“屬性窗口”,請(qǐng)單擊“視圖”菜單上的“屬性窗口”(F4)您可能需要關(guān)閉“工具箱”以獲得更多空間設(shè)置窗體的“Text”屬性(顯示在窗體標(biāo)題欄中),方法是在“屬性窗口”中“Text”屬性的右側(cè)單擊,并鍵日期選擇單擊以選擇標(biāo)簽,將其“Text”屬性設(shè)置為“選擇日期:”單擊以選擇按鈕,將其“Text”屬性設(shè)置為“確定”窗體應(yīng)該與下面的內(nèi)容類(lèi)似編寫(xiě)事件處理程序在本節(jié)中,您將編寫(xiě)在發(fā)生以下事編寫(xiě)事件處理程序在本節(jié)中,您將編寫(xiě)在發(fā)生以下事件時(shí)運(yùn)行的代碼Button控件上的ClickDateTimePicker控件上的ValueChanged編寫(xiě)代碼以雙擊按鈕以添加按鈕Click事件處理程序(按鈕的默認(rèn)事件為Click事件)在選項(xiàng)卡頁(yè)的編輯區(qū)域中顯示的窗體的“代碼”視圖中,此操作創(chuàng)建了一個(gè)空事件處理程序方法將光標(biāo)移動(dòng)到 方法的左大括號(hào)之后,并鍵入在發(fā)生該事件時(shí)運(yùn)行的以下代碼在鍵入范圍解析運(yùn)算符(::)之后,IntelliSense將顯示可能的有效選項(xiàng)的列表。您可以從該列表中選擇一個(gè)選并按Tab,雙擊它,或者繼續(xù)鍵返回“設(shè)計(jì)”.h[設(shè)計(jì)選項(xiàng)卡,或者單擊“視圖菜單上的設(shè)計(jì)器。單擊DateTimeicke控件。雙擊“ValueChanged”事件,在“代碼”視圖中生成一個(gè)空事件處理程序說(shuō)還將一行代碼添加到niiComponnt函數(shù)中,此函數(shù)創(chuàng)建事件處理程序,并將其分配給與控件相關(guān)聯(lián)的“單擊”字段。如果您雙擊“設(shè)計(jì)”視圖中的控件以添加相關(guān)代碼,然后決定稍后移除它,則刪除兩個(gè)添加項(xiàng)(不僅僅是空的事件處理程序)。 將光標(biāo)移動(dòng)到dateTimePicker1_ValueChanged方法的左大括號(hào)之后,按 將光標(biāo)移動(dòng)到dateTimePicker1_ValueChanged方法的左大括號(hào)之后,按Enter鍵,并鍵入在發(fā)生該行的以下代碼label1->Text=String::Format("Newdate:{0}",dateTimePicker1-當(dāng)應(yīng)用程序的用戶(hù)選擇了新的日期時(shí),標(biāo)簽的Text屬性將設(shè)置為后跟DateTimePicker的Text屬性的字符VisualStudio提供了幾個(gè)可以簡(jiǎn)化代碼鍵入的功能當(dāng)鍵入箭頭運(yùn)算符(->)時(shí),IntelliSense將顯示可從中選擇的有效選項(xiàng)列表自動(dòng)完成可以根據(jù)您已鍵入的部分完成變量名或成員的鍵入。例如,如果鍵入了String::Fo并按空格鍵或Tab,VisualStudio將自動(dòng)完成鍵入String::Format生成并運(yùn)行程在“生成”菜單中,單擊“生成解決方案”如果存在錯(cuò)誤,請(qǐng)單擊“輸出”窗口中的“轉(zhuǎn)到下一條消息”按鈕。錯(cuò)誤消息文本顯示在狀態(tài)欄中。您可以雙擊何錯(cuò)誤,轉(zhuǎn)到源代碼中包含該錯(cuò)誤的行在“調(diào)試”菜單中,單擊“不進(jìn)行調(diào)試直接運(yùn)行”。將顯示您生成的應(yīng)用程序您可以向此應(yīng)用程序添加更多功能,如菜單、其他窗體和幫助文件。不要畏懼實(shí)驗(yàn)說(shuō)ValueChanged是DateTimePicker控件的默認(rèn)事件。因此,您還可以雙擊DateTimePicker控件,以生成空事件處理程序創(chuàng)建Windows窗體創(chuàng)建Windows窗體C++Windows窗體應(yīng)用程序通過(guò)新的VisualC++語(yǔ)法使用.NETFramework.NET功能在本過(guò)程中,您將創(chuàng)建顯示數(shù)字 窗體控件。用戶(hù)每次單擊應(yīng)用程序中的標(biāo)簽時(shí)將遞增此數(shù)字。您還一個(gè)Windows窗體應(yīng)用程序項(xiàng)目來(lái)測(cè)試該控本演練涵蓋以下內(nèi)運(yùn)行應(yīng)用程序創(chuàng)建在本節(jié)中,您將使用窗體控件”項(xiàng)目模板創(chuàng)建一個(gè)用戶(hù)控件,該控件是一個(gè)包含其他控件的復(fù)體控創(chuàng)建新的Windows窗體控件項(xiàng)在“文件”菜單上,單擊“新建”,再單擊“項(xiàng)目…”在“項(xiàng)目類(lèi)型”窗格中,選擇“VisualC++”節(jié)點(diǎn)中的“CLR”,然后在“Visual“Windows窗體控件庫(kù)”已安裝的模板”窗格中選鍵入項(xiàng)目的名稱(chēng),如“clickcounter”為解決方案鍵入一個(gè)不同的名稱(chēng),如“controlandtestapp”您可以接受默認(rèn)位置、鍵入所需的位置或者導(dǎo)航到要保存項(xiàng)目的目錄窗體設(shè)計(jì)器將打開(kāi)并顯示一個(gè)區(qū)域,您可以將要放置到控件設(shè)計(jì)圖面上的控件添加到該區(qū)域中設(shè)計(jì)控在本步驟中,您要將一個(gè)Label控件添加到控件設(shè)計(jì)圖面中。然后,設(shè)置控件本身及其包含的Label控件的一些屬性設(shè)置用戶(hù)控如果沒(méi)有顯示“屬性”窗口,請(qǐng)單擊“視圖設(shè)置用戶(hù)控如果沒(méi)有顯示“屬性”窗口,請(qǐng)單擊“視圖”菜單上的“屬性窗口”在 窗體設(shè)計(jì)器中,單擊控件將其選中并按如下方式設(shè)置它的屬性將“Size”屬性設(shè)置為“100,100”將“BorderStyle”設(shè)置為“Fixed3D”將控件放置到應(yīng)用程序中后,將顯示標(biāo)簽的邊如果“工具箱”窗口不可見(jiàn),請(qǐng)從“視圖”菜單中選擇“工具箱”將一個(gè)Label控件從“工具箱”拖動(dòng)到設(shè)計(jì)圖面上,將其放置在靠近控件中心的位置設(shè)置標(biāo)簽的下列屬將“Size”設(shè)置為“30,20”。將“TextAlign”設(shè)置為“MiddleCenter”保留“Name”屬性(在代碼中將使用它來(lái)引用該控件)為“l(fā)abel1”。該控件應(yīng)如通過(guò)雙擊標(biāo)簽,為標(biāo)簽的Click事件(標(biāo)簽的默認(rèn)事件)添加事件處理程序文件將顯示在編輯區(qū)域中,并附帶一個(gè)空事件處理程序方將光標(biāo)移動(dòng)到label1_Click方法的左大括號(hào)之后,按Enter并鍵入以下內(nèi)容inttemp=label1‐>Text=說(shuō)如果需要更多空間,可以關(guān)閉“工具箱”或“屬性”窗口,方法是單擊相應(yīng)的“關(guān)閉”框,或者解除窗口鎖定使其自動(dòng)隱藏在鍵入范圍解析運(yùn)算符(::)、點(diǎn)運(yùn)算符(.)或箭頭運(yùn)算符(->)之在鍵入范圍解析運(yùn)算符(::)、點(diǎn)運(yùn)算符(.)或箭頭運(yùn)算符(->)之后,IntelliSense將顯示有效選項(xiàng)的列表。以通過(guò)突出顯示某個(gè)項(xiàng)并按Tab或Enter,或者通過(guò)雙擊某個(gè)項(xiàng),將該項(xiàng)插入代碼此外,當(dāng)鍵入方法的左括號(hào)時(shí),Visual將顯示該方法的每個(gè)重載的有效參數(shù)類(lèi)向控件添加自定義在本步驟中,您將定義一個(gè)自定義屬性,它確定控件上顯示的數(shù)字是在用戶(hù)單擊標(biāo)簽時(shí)遞增還是在用戶(hù)單擊控件上的何位置時(shí)遞增向控件添加自定義屬然后鍵入以下內(nèi)容propertyboolClickAnywhereboolget()return(label1‐>Dock}voidset(bool{if}}==當(dāng)控件的ClickAnywhere屬性設(shè)置時(shí),標(biāo)簽的Dock屬性將設(shè)置為DockStyle::Fill,該標(biāo)簽將占據(jù)整個(gè)件圖面。單擊控件圖面上的任何位置將引發(fā)標(biāo)簽的Click事件,使標(biāo)簽上的數(shù)當(dāng)ClickAnywhere屬性false(默認(rèn)值)時(shí),標(biāo)簽的Dock屬性將設(shè)置為DockStyle::None。標(biāo)簽不填件,并且單擊控件時(shí),必須單擊標(biāo)簽邊框內(nèi)部才會(huì)引發(fā)標(biāo)簽的Click事件,使數(shù)字遞增生成用戶(hù)控件。在“生成”菜單上,選擇“生成解決方案”如果沒(méi)有錯(cuò)誤,將生成文件名為clickcounter.dll的 窗體控件。您可以在項(xiàng)目目錄結(jié)構(gòu)中找到此文件添加用于測(cè)試控件在本步驟中,要?jiǎng)?chuàng)建一 窗體應(yīng)用程序項(xiàng)目,您將在其中的一個(gè)窗體上放置“clickcounter”控件的實(shí)例Windows窗體應(yīng)用程序項(xiàng)在“文件”菜單上選“新建”,然后單擊“項(xiàng)目Windows窗體應(yīng)用程序項(xiàng)在“文件”菜單上選“新建”,然后單擊“項(xiàng)目…”也可以通過(guò)以下方法將項(xiàng)目添加到解決方案中:右擊“解決方案資源管理器”中加”,然后單擊“新建項(xiàng)目...”解決方案,指向“在“項(xiàng)目類(lèi)型”窗格中,選擇“VisualC++”節(jié)點(diǎn)中的“CLR”,然后在“Visual“Windows窗體應(yīng)用程序”已安裝的模板”窗格中選鍵入項(xiàng)目的名稱(chēng),如“testapp”確保選擇“添入解決方案”,而不是接受“解決方案”下拉列表中默認(rèn)的“創(chuàng)建新解決方案”然后單擊“確定”將為新項(xiàng)目打 窗體設(shè)計(jì)器,其中顯示一個(gè)名為“Form1”的新窗體,如下圖所示將控件添加添加對(duì)控件的引用。右擊“解決方案資源管理器”中 項(xiàng)目,然后單擊“引用”單擊“添加新引用”按鈕,單擊“項(xiàng)目”選項(xiàng)卡(這是在此解決方案中添加對(duì)另一個(gè)項(xiàng)目的引用),然后選clickcounter項(xiàng)目。單擊“確定”兩次如果看不到“工具箱”窗口,請(qǐng)從“視圖”菜單中選擇“工具箱”如果在工具箱中找不到帶有“齒輪”圖標(biāo)控件,則右擊“工具箱”,然后單擊“選擇項(xiàng)”單擊“瀏覽”按鈕,定位到解決方案目錄結(jié)構(gòu)中的 文件。選擇該文件并單擊“打開(kāi)”clickcounter控件即出現(xiàn)在“.NET組件”列表中,并帶有一個(gè)選中標(biāo)記。單擊“確定”說(shuō)您所創(chuàng)建的用于測(cè)試控件的Windows窗體應(yīng)用程序可以使用VisualC++.NET語(yǔ)言(如C#VisualBasic)控件即顯示在“工具箱”中,帶有默認(rèn)的“齒輪”將控件放在應(yīng)用程控件即顯示在“工具箱”中,帶有默認(rèn)的“齒輪”將控件放在應(yīng)用程在本步驟中,您要將控件的兩個(gè)實(shí)例放到應(yīng)用程序窗體上并設(shè)將控件的實(shí)例放置到窗從“工具箱”拖出 控件的兩個(gè)實(shí)例。將它們放在窗體上,避免使其重疊如果需要加寬窗體,請(qǐng)單擊以選擇窗體,向外拖動(dòng)一個(gè)選擇手柄如果看不到“屬性”窗口,請(qǐng)從“視圖”菜單選擇“屬性”如果屬性是按類(lèi)別組織的,“ClickAnywhere”屬性將位于“屬性窗口”的“雜項(xiàng)”單擊以選擇窗體上的clickcounter控件實(shí)例,然后將其“ClickAnywhere”屬性設(shè)置為true。將clickcounter控件的另一個(gè)實(shí)例的“ClickAnywhere”屬性設(shè)置為false(默認(rèn)值)。在解決方案資源管理器中,右擊 項(xiàng)目,并選擇“設(shè)為啟動(dòng)項(xiàng)目”從“生成”菜單中選擇“重新生成解決方案”您應(yīng)當(dāng)看到生成了兩個(gè)項(xiàng)目,并且沒(méi)有出現(xiàn)錯(cuò)運(yùn)行應(yīng)用程在本步驟中,您將運(yùn)行應(yīng)用程序,并單擊控件測(cè)試它們測(cè)試應(yīng)用程 從“調(diào)試”菜單中選擇“啟動(dòng)調(diào)試”將顯示窗體,其中控件的兩個(gè)實(shí)例都可見(jiàn) 運(yùn)行應(yīng)用程序并單擊兩個(gè)“clickcounter”單擊“ClickAnywhere”設(shè)置為true的控件單擊控件上的任何位置,標(biāo)簽上的數(shù)字都會(huì)遞單擊“ClickAnywhere”設(shè)置為false的控件僅當(dāng)在標(biāo)簽的可見(jiàn)邊框內(nèi)單擊時(shí),標(biāo)簽上的數(shù)字才會(huì)遞增。下面的屏幕快照演示了應(yīng)用程序在單擊數(shù)后的外觀(guān)情況 單擊“Form1”窗口右上角的“關(guān)閉”框,關(guān) 單擊“Form1”窗口右上角的“關(guān)閉”框,關(guān)閉測(cè)試應(yīng)用程序使用DirectX創(chuàng)建游戲++++管代碼編寫(xiě)游戲。此靈活性允許您在最熟悉的平臺(tái)上創(chuàng)建游創(chuàng)建一個(gè)好游戲不是一件輕而易舉的事,這不在本指導(dǎo)教程的范圍內(nèi)。如果要?jiǎng)?chuàng)建游戲,請(qǐng)查看下面的鏈接,其中的息可以幫助您創(chuàng)建第一個(gè)游戲圖形編程入若要使用DirectX創(chuàng)建游戲,您必須從以下位置DirectXSDK:DirectXDeveloperCenter(DirectX開(kāi)發(fā)人員中心)。安裝了SDK后,您會(huì)發(fā)現(xiàn)幾個(gè)示例,這些示例將幫助您了解DirectX編程的入門(mén)知識(shí)。在MSDN上查看VisualC++ExpressEdition網(wǎng)頁(yè),獲得可以下載、學(xué)習(xí)和隨意修改的現(xiàn)有游戲。在該頁(yè)面您可以從MicrosoftResearch下載游戲,甚至可以下載流行游戲QuakeII.NET的完整源代碼創(chuàng)建可重用代碼多任何CC++應(yīng)用程序都可以使用的庫(kù),如C運(yùn)行庫(kù)和標(biāo)準(zhǔn)C++庫(kù)。如果沒(méi)有這些庫(kù)CC++應(yīng)用程序沒(méi)有寫(xiě)入控制臺(tái)或確定當(dāng)前日期和時(shí)間的標(biāo)準(zhǔn)方法每個(gè)C或C++應(yīng)用程序都可能用到前面提到的庫(kù)之一。您還可以創(chuàng)建任何應(yīng)用程序都可以使用的自己的類(lèi)和算法VisualC++,您可以創(chuàng)建三種類(lèi)型的庫(kù)使托管程序集通常,如果創(chuàng)建可供本 代碼使用的庫(kù),則可以創(chuàng)建動(dòng)態(tài)鏈接通常,如果創(chuàng)建可供本 代碼使用的庫(kù),則可以創(chuàng)建動(dòng)態(tài)鏈接庫(kù)或靜態(tài)庫(kù)。有關(guān)如何確定應(yīng)創(chuàng)建何種類(lèi)型庫(kù)多信息,請(qǐng)參見(jiàn)DLL。如果要?jiǎng)?chuàng)C++/CLI或任何其他.NET語(yǔ)言(如C#VisualBasic)使用的庫(kù),則應(yīng)創(chuàng)托管程在本部分中,我們將創(chuàng)建簡(jiǎn)單的標(biāo)準(zhǔn)數(shù)學(xué)運(yùn)算(如加法和乘法)庫(kù),并將演示應(yīng)用程序如演練:創(chuàng)建和使用動(dòng)態(tài)鏈接我們將創(chuàng)建的第一種類(lèi)型的庫(kù)是動(dòng)態(tài)鏈接庫(kù)(DLL)。使用 是一種重用代碼的絕佳方式。您不必在自己創(chuàng)建的每個(gè)序中重新實(shí)現(xiàn)同一例程,而只需對(duì)這些例程編寫(xiě)一次,然后從需要該功能的應(yīng)用程序引用本演練涵蓋以下內(nèi)創(chuàng)建新的動(dòng)態(tài)鏈接庫(kù)(DLL項(xiàng)目。創(chuàng)建引用動(dòng)態(tài)鏈接庫(kù)的應(yīng)用程序創(chuàng)建新的動(dòng)態(tài)鏈(DLL)從“文件”菜單中,選擇“新建”,然后選擇“項(xiàng)目…”在“模板”窗格中,選擇“Win32控制臺(tái)應(yīng)用程序”。單擊“確定”啟動(dòng)Win32應(yīng)用程序向?qū)?。在“Win32應(yīng)用程序向?qū)А睂?duì)話(huà)框的“概述”頁(yè)中,單擊“下一步”在“Win32應(yīng)用程序向?qū)А敝械摹皯?yīng)用程序設(shè)置”“應(yīng)用程序類(lèi)型”下的“DLL”(如果可用),或者選擇“制臺(tái)應(yīng)用程序”(如果“DLL”不可用)。某些版本的VisualStudio不支持通過(guò)使用向?qū)?chuàng)建DLL項(xiàng)目。您可以稍后對(duì)此進(jìn)行更改,以將項(xiàng)目編譯為DLL。在應(yīng)用程序向?qū)А钡摹皯?yīng)用程序設(shè)置”頁(yè)中,選擇“附加選項(xiàng)”下的“空項(xiàng)目”單擊“完成”創(chuàng)建項(xiàng)向動(dòng)態(tài)鏈接“項(xiàng)目”菜單中選擇“添加新項(xiàng)…”“添加新項(xiàng)”“類(lèi)別”lC+下的代碼”模板頭文件.hMtFcl.h,并單擊添加添加一個(gè)名為“MyMathFuncs”的簡(jiǎn)單類(lèi),以執(zhí)行常見(jiàn)的算術(shù)運(yùn)算,如加、減、乘和除。代碼應(yīng)與以下內(nèi)容類(lèi)似//namespace{class{//Returnsa+Add(doublea,double//Returnsa‐Subtract(doublea,double//Returnsclass{//Returnsa+Add(doublea,double//Returnsa‐Subtract(doublea,double//Returnsa*Multiply(doublea,double//Returnsa///ThrowsDivideByZeroExceptionifbisdeclspec(dllexport)doubleDivide(doublea,double}declspec(dllexport)修飾符這些修飾符使DLL能夠?qū)С鲈摲椒ㄒ怨┱?qǐng)注意此代碼方法聲明中序使用。有關(guān)更多信息,請(qǐng)參見(jiàn)dllimport項(xiàng)目添加新項(xiàng)添加新項(xiàng)類(lèi)別l代碼”模板C++文件”thFunl.cp,并單擊“添加在源文件中實(shí)現(xiàn)“MyMathFuncs”的功能。代碼應(yīng)與以下內(nèi)容類(lèi)似////compilewith:/EHsc#include#includeusingnamespacenamespace{{}MyMathFuncs::Add(doublea,a+{MyMathFuncs::Subtract(doublea,doublea‐}{}MyMathFuncs::Multiply(doublea,doublea*{MyMathFuncs::Divide(doublea,doubleif}{}MyMathFuncs::Multiply(doublea,doublea*{MyMathFuncs::Divide(doublea,doubleif(b=={thrownewinvalid_argument("bcannotbe}returna/}}若要將項(xiàng)目生成為DLL,請(qǐng)從“項(xiàng)目”菜單中選擇MathFuncsDll“屬性...”。在左窗格中,選擇“配置屬性”下的“規(guī)”。在右窗格中,將“配置類(lèi)型”更改為“動(dòng)態(tài)庫(kù)(.dll)”。單擊“確定”保存更改編譯該動(dòng)態(tài)鏈接庫(kù),方法是選擇“生成”菜單中的“生成解決方案”這樣就創(chuàng)建了一個(gè)可供其他程序使用有關(guān)DLL的詳細(xì)信息,請(qǐng)參見(jiàn)DLLDLL創(chuàng)建引用動(dòng)態(tài)鏈接庫(kù)的應(yīng)若要?jiǎng)?chuàng)建將引用并使用剛創(chuàng)建的動(dòng)態(tài)鏈接庫(kù)的應(yīng)用程序,請(qǐng)從“文件”菜單中選擇“新建”,然后選擇“項(xiàng)目...”在“項(xiàng)目類(lèi)型”窗格中,選擇“VisualC++”下的“Win32”在“模板”窗格中,選擇控制臺(tái)應(yīng)用程序”為項(xiàng)目選擇一個(gè)名稱(chēng)(如MyExecRefsDll),并將其鍵入“名稱(chēng)”字段。從“解決方案”旁邊的下拉列表中選擇“添單擊“確定”啟動(dòng)“Win32應(yīng)用程序向?qū)А?。在“Win32應(yīng)用程序向?qū)А睂?duì)話(huà)框的“概述”頁(yè)中,單擊“下一步”在“Win32應(yīng)用程序向?qū)А钡摹皯?yīng)用程序設(shè)置”頁(yè)中,選擇“應(yīng)用程序類(lèi)型”下的“控制臺(tái)應(yīng)用程序”在應(yīng)用程序向?qū)А钡摹皯?yīng)用程序設(shè)置”頁(yè)中,清除“附加選項(xiàng)”下的“預(yù)編譯頭”復(fù)選框按“完成”創(chuàng)建項(xiàng)目在控制臺(tái)應(yīng)用程序中使用類(lèi)庫(kù)的說(shuō)擇MyExecRefsDll項(xiàng)目,然后從“項(xiàng)目”菜單中選擇“引用...”。在“屬性頁(yè)”對(duì)話(huà)框中,展開(kāi)“通用屬性”節(jié)點(diǎn),選性頁(yè)”對(duì)話(huà)框->“通用屬性”->“框架和引用”。顯示“添加引用”“項(xiàng)目”選項(xiàng)卡列出了當(dāng)前解決方案中的所有項(xiàng)目,以項(xiàng)目tFuD。然后單擊確定”。屬性頁(yè)配置屬性節(jié)點(diǎn),然后展開(kāi)/C常規(guī)附加包含目錄MtFclh“tFclll”TH環(huán)境屬性頁(yè)配置屬性調(diào)試。在環(huán)境容:PATH=<MathFuncsDll.dll文件的路徑>,其中<MathFuncsDll.dll文件的路徑>應(yīng)替換的實(shí)際位置。單擊“確定”保存所現(xiàn)在,可以在應(yīng)用程序中使用“MyMathFuncs”類(lèi)了。使用以下代碼替換“MyExecRefsDll.cpp”的內(nèi)////compilewith:/EHsc/link#include#includeusingnamespaceint{doublea=7.4;intb=99;cout<<"a+b="MathFuncs::MyMathFuncs::Add(a,b)<<endl;cout<<"a‐b="<<MathFuncs::MyMathFuncs::Subtract(a,b)<<"a*b="MathFuncs::MyMathFuncs::Multiply(a,b)<<說(shuō)如果要從命令行而VisualStudio運(yùn)行可執(zhí)行文件,則必須在命令提示符處手動(dòng)更新PATH環(huán)境變量,如下所示:setPATH=%PATH%;<MathFuncsDll.dll文件的路徑>,其中<MathFuncsDll.dll文件的路徑>應(yīng)替換為MathFuncsDll.dllcout<<"a/b="MathFuncs::MyMathFuncs::Divide(a,b)<<return}cout<<"a/b="MathFuncs::MyMathFuncs::Divide(a,b)<<return} 通過(guò)從“生成”菜單中選擇“生成解決方案”,生成可執(zhí)行文件運(yùn)行應(yīng)用程 確保選擇“MyExecRefsDll”作為默認(rèn)項(xiàng)目。在“解決方案資源管理器”菜單中的“設(shè)為啟動(dòng)項(xiàng)目”MyExecRefsDll,然后選擇“項(xiàng)目 若要運(yùn)行項(xiàng)目,請(qǐng)選擇“調(diào)試”菜單中的“開(kāi)始執(zhí)行(不調(diào)試)”。輸出應(yīng)該與下面的內(nèi)容類(lèi)a+‐*/b====演練:創(chuàng)建和使用靜態(tài)庫(kù)我們將創(chuàng)建的下一個(gè)庫(kù)類(lèi)型是靜態(tài) (LIB)。使用靜態(tài)庫(kù)是重用代碼的一種絕佳方式。您不必在自己創(chuàng)建的每個(gè)程序中新實(shí)現(xiàn)同一例程,而只需對(duì)這些例程編寫(xiě)一次,然后從需要該功能的應(yīng)用程序引用它們即可本演練涵蓋以下內(nèi)創(chuàng)建引用靜態(tài)庫(kù)的應(yīng)用程序創(chuàng)建新的靜從“文件”菜單中,選擇“新建”,然后選擇“項(xiàng)目...”在“模板”窗格中,選擇“Win32控制臺(tái)應(yīng)用程序”。為項(xiàng)目選擇一個(gè)名稱(chēng)(例如MathFuncsLib),并將該名稱(chēng)輸入“名稱(chēng)”字段。為解決方案選擇一個(gè)名稱(chēng)(例如按“確定”啟動(dòng)“Win32應(yīng)用程序向?qū)А薄T凇癢in32應(yīng)用程序向?qū)А睂?duì)話(huà)框的“概述”頁(yè)中,按“下一步”在“Win32應(yīng)用程序向?qū)А钡摹皯?yīng)用程序設(shè)置”頁(yè)中,選擇“應(yīng)用程序類(lèi)型”下的“靜態(tài)庫(kù)”在應(yīng)用程序向?qū)А钡摹皯?yīng)用程序設(shè)置”頁(yè)中,清除“附加選項(xiàng)”下的“預(yù)編譯頭”復(fù)選框按“完成”創(chuàng)建項(xiàng)目向靜態(tài)庫(kù)添加添加一個(gè)名為“MyMathFuncs”的簡(jiǎn)單類(lèi),以執(zhí)行常見(jiàn)的算術(shù)運(yùn)算,如加、減、乘和除。代碼應(yīng)與以下內(nèi)容類(lèi)似//namespace{class{//Returnsa+doubleAdd(doublea,double//Returnsa‐doubleSubtract(doublea,double//Returnsa*doubleMultiply(doublea,double//Returnsa///ThrowsDivideByZeroExceptionifbis0doubleDivide(doublea,doubleb);}項(xiàng)目添加新項(xiàng)...”添加新項(xiàng)類(lèi)別l代碼”模板C++文件”例如MthFuns.cp),并按“添加在源文件中實(shí)現(xiàn)MyMathFuncs的功能。代碼應(yīng)與以下內(nèi)容類(lèi)似compilewith:/cpost‐buildcommand:lib#include#includeusingnamespacenamespace{doubleMyMathFuncs::Add(doublea,double{}a+{}MyMathFuncs::Subtract(doublea,doublea‐{{}a+{}MyMathFuncs::Subtract(doublea,doublea‐{}MyMathFuncs::Multiply(doublea,doublea*{MyMathFuncs::Divide(doublea,doubleif(b=={thrownewinvalid_argument("bcannotbe}returna/}}若要將項(xiàng)目生成為靜態(tài)庫(kù),請(qǐng)從“項(xiàng)目”菜單中選擇屬性...”。在左窗格中,選擇“配置屬性”下“常規(guī)”。在右窗格中,將“配置類(lèi)型”更改為“靜態(tài)庫(kù)(.lib)”。按“確定”保存更改編譯該靜態(tài)庫(kù),方法是選擇“生成”菜單中的“生成解決方案”。這將創(chuàng)建一個(gè)可供其他程序使用的靜態(tài)庫(kù)創(chuàng)建引用靜態(tài)庫(kù)的應(yīng)用若要?jiǎng)?chuàng)建引用并使用剛剛創(chuàng)建的靜態(tài)庫(kù)的應(yīng)用程序,請(qǐng)從“文件”菜單中選擇“新建”,然后選擇“項(xiàng)目...”在“項(xiàng)目類(lèi)型”窗格中,選擇“VisualC++”下的“Win32”在“模板”窗格中,選擇控制臺(tái)應(yīng)用程序”說(shuō)的Cl.l/c/EHMthFuns.cpp)。這將創(chuàng)建名為“tFcbob”/c(i.exbthuno)“thFuncsbb”。有關(guān)庫(kù)管LIB參考。為項(xiàng)目選擇一個(gè)名稱(chēng)(如MyExecRefsb),并將其鍵入“名稱(chēng)”字段。從“解決方案”旁邊的下拉列表中選擇“添按“確定為項(xiàng)目選擇一個(gè)名稱(chēng)(如MyExecRefsb),并將其鍵入“名稱(chēng)”字段。從“解決方案”旁邊的下拉列表中選擇“添按“確定”啟動(dòng)“Win32應(yīng)用程序向?qū)А?。在“Win32應(yīng)用程序向?qū)А睂?duì)話(huà)框的“概述”頁(yè)中,按“下一步”在“Win32應(yīng)用程序向?qū)А钡摹皯?yīng)用程序設(shè)置”頁(yè)中,選擇“應(yīng)用程序類(lèi)型”下的“控制臺(tái)應(yīng)用程序”在應(yīng)用程序向?qū)А钡摹皯?yīng)用程序設(shè)置”頁(yè)中,清除“附加選項(xiàng)”下的“預(yù)編譯頭”按“完成”創(chuàng)建項(xiàng)目在控制臺(tái)應(yīng)用程序中使用靜態(tài)庫(kù)的項(xiàng)目菜單中的引用屬性頁(yè)對(duì)話(huà)框中,展開(kāi)“通用屬性”節(jié)點(diǎn),并選擇“引用”。然后選擇“添加新引用...”按鈕。有關(guān)“引用...”對(duì)話(huà)框的更多信息,請(qǐng)參見(jiàn)Projecname>。顯示“添加引用”“項(xiàng)目”選項(xiàng)卡列出了當(dāng)前解決方案中的所有項(xiàng)目,以項(xiàng)目tFsb。然后選擇確定”。若要引用靜態(tài)庫(kù)的頭文件,必須修改包含目錄路徑。為此,請(qǐng)?jiān)凇皩傩皂?yè)”對(duì)話(huà)框中,展開(kāi)“配置屬性”節(jié)點(diǎn),后展開(kāi)“C/C++”節(jié)點(diǎn),并選擇“常規(guī)”。在“附加包含目錄”旁邊,鍵入MathFuncsLib.h頭文件所在位置的路現(xiàn)在即可在此應(yīng)用程序中使 類(lèi)。使用以下代碼替換“MyExecRefsLib.cpp”的內(nèi)容////compilewith:/EHsc/link#include#includeusingnamespaceint{doublea=7.4;intb=99;"a+b="MathFuncs::MyMathFuncs::Add(a,b)<<"a‐b="<<MathFuncs::MyMathFuncs::Subtract(a,b)<<endl;"a*b="<<MathFuncs::MyMathFuncs::Multiply(a,b)<<endl;"a/b="<<MathFuncs::MyMathF
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025出租車(chē)司機(jī)用工合同范本
- 2025商鋪?zhàn)赓U合同簡(jiǎn)單的范本
- 全新清算協(xié)議合同-二零二五年度清算與債務(wù)重組3篇
- 2025年度全新合同:人工智能輔助駕駛系統(tǒng)研發(fā)與推廣協(xié)議3篇
- 2025年度環(huán)保設(shè)備安裝與環(huán)保技術(shù)咨詢(xún)合同3篇
- 2025年度農(nóng)村房屋改造裝修與農(nóng)村光伏發(fā)電項(xiàng)目合同
- 二零二五年度出國(guó)工人勞務(wù)輸出與職業(yè)規(guī)劃合同
- 二零二五年度智能漁業(yè)養(yǎng)魚(yú)設(shè)備共享合作協(xié)議3篇
- 2025年度農(nóng)業(yè)科技賒銷(xiāo)合作協(xié)議3篇
- 2025年度水上安全事故處理與救援合作協(xié)議3篇
- 安徽省蕪湖市弋江區(qū)2023-2024學(xué)年八年級(jí)上學(xué)期期末英語(yǔ)試題(含聽(tīng)力)
- JJG 693-2011可燃?xì)怏w檢測(cè)報(bào)警器
- 2024-2029年中國(guó)水利行業(yè)發(fā)展分析及發(fā)展前景與趨勢(shì)預(yù)測(cè)研究報(bào)告
- 高中英語(yǔ)U4-The-Words-That-Changed-A-Nation教學(xué)課件
- 朱砂行業(yè)分析
- 如何防范勒索軟件和網(wǎng)絡(luò)勒索攻擊
- T-CI 228-2023 寧?kù)o小區(qū)建設(shè)與評(píng)價(jià)技術(shù)規(guī)范
- 二年級(jí)數(shù)學(xué)綜合素質(zhì)評(píng)價(jià)專(zhuān)項(xiàng)方案
- 成人有創(chuàng)機(jī)械通氣氣道內(nèi)吸引技術(shù)操作解讀護(hù)理課件
- 貴州省黔南布依族苗族自治州2023-2024學(xué)年九年級(jí)上學(xué)期期末數(shù)學(xué)試題(含答案)
- 智能膠囊內(nèi)鏡導(dǎo)航算法研究
評(píng)論
0/150
提交評(píng)論