visualstudio集成開發(fā)環(huán)境提供了一組工具可幫指導(dǎo)教程_第1頁
visualstudio集成開發(fā)環(huán)境提供了一組工具可幫指導(dǎo)教程_第2頁
visualstudio集成開發(fā)環(huán)境提供了一組工具可幫指導(dǎo)教程_第3頁
visualstudio集成開發(fā)環(huán)境提供了一組工具可幫指導(dǎo)教程_第4頁
visualstudio集成開發(fā)環(huán)境提供了一組工具可幫指導(dǎo)教程_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

VisualStudioIDE簡介VisualStudio集成開發(fā)環(huán)境(IDE)VisualStudioIDE簡介VisualStudio集成開發(fā)環(huán)境(IDE)提供了一組工具,可幫助您編寫和修改代碼,以及檢測和更正錯在這些主題中,您將創(chuàng)建一個新的標(biāo)準(zhǔn)C++程序,并使用VisualStudio為C++開發(fā)人員提供的功能測試該程序的能。您創(chuàng)建的簡單程序?qū)⒏櫽卸嗌賯€玩家正在玩各種紙牌游戲本演練涵蓋以下內(nèi)演練:使用項(xiàng)目和解決方案演練:生成(C++)演練:測試(C++)演練:部署程序演練:使用項(xiàng)目和解決方案在VisualStudio中,可以將您的工作組織為項(xiàng)目和解決方案。一個解決方案可以包含多個項(xiàng)目,例如,一個DLL和個引用該 的可執(zhí)行文件。有關(guān)更多信息,請參見介紹解決方案、項(xiàng)目和項(xiàng)此演練演示如何創(chuàng)建項(xiàng)目,使用“解決方案資源管理器”向項(xiàng)目中添加文件,在文件中鍵入代碼,然后生成項(xiàng)目創(chuàng)建項(xiàng)在使用VisualStudio編寫VisualC++程序的過程中,第一個任務(wù)是選擇項(xiàng)目的類型。對于每種項(xiàng)目類型,Visual創(chuàng)建項(xiàng)在“文件”菜單上指向“新建”,再單擊“項(xiàng)目”在“項(xiàng)目類型”區(qū)域中,單擊“VisualC++”。然后,在“VisualStudio已安裝的模板”窗格中,單擊“Win32控制game鍵入項(xiàng)目名稱。對于此示例,請鍵當(dāng)您創(chuàng)建項(xiàng)目時,Visual接受該名稱會將該項(xiàng)目放入一個解決方案。默認(rèn)情況下,解決方案的名稱與項(xiàng)目名稱相同您可以接受默認(rèn)位置、鍵入一個不同的位置或者瀏覽到要保存單擊“確定”啟動“Win32應(yīng)用程序向?qū)А?在應(yīng)用程序向?qū)А钡摹案攀觥表撋?,單擊“下一步?在“應(yīng)用程序類型 在應(yīng)用程序向?qū)А钡摹案攀觥表撋?,單擊“下一步?在“應(yīng)用程序類型”下的“應(yīng)用程序設(shè)置”頁,選擇“控制臺應(yīng)用程序”。在“附加選項(xiàng)”下選擇“空項(xiàng)目”設(shè)置。單擊“成”現(xiàn)在有了項(xiàng)目,但項(xiàng)目還沒有源代碼文件使用解決方案資源“解決方案資源管理器”可幫助您使用解決方案中的文件和其他資源在本節(jié)中,您將向項(xiàng)目中添加一個類VisualStudio將添加.h.cpp文件。然后,為測試類的主程序向項(xiàng)加一個新的源代碼文件向項(xiàng)目添加如果未顯示“解決方案資源管理器”,請在“視圖”菜單上,單擊“解決方案資源管理器”在“解決方案資源管理器”中,右擊“頭文件”文件夾,指向“添加”,然后單擊“類”在“一般C++類向?qū)А敝?,鍵入Cardgame作為“類名”,并接受默認(rèn)的文件名和設(shè)置。單擊“完成”對已在編輯區(qū)域中打開的Cardgame.h文件進(jìn)行以下更在類定義的左大括號之后添加兩個私有數(shù)據(jù)成intstaticint添加一個采用類型為int的參數(shù)之一的公共構(gòu)造函數(shù)原Cardgame(int刪除Visual 生成的默認(rèn)構(gòu)造函數(shù)。默認(rèn)構(gòu)造函數(shù)是沒有參數(shù)的構(gòu)造函數(shù)。該默認(rèn)構(gòu)造函數(shù)類似于在您對Cardgame.h文件進(jìn)行更改之后,該文件應(yīng)類似#pragmaclass{intstaticinttotalparticipants;Cardgame(int#pragma行指明編譯器只包含該文件一次。有關(guān)更多信息,#pragma行指明編譯器只包含該文件一次。有關(guān)更多信息,請參見once有關(guān)此頭文件中的其他C++關(guān)鍵字的信息,請參見class(C++)、int、Static(C++)和public(C++)雙擊“源文件”文件夾Cardgame.cpp,將其打開以進(jìn)行編輯#includeCardgame.h"之后,添加以下各行#includeusingnamespaceCardgame::Cardgame(int{players=p;cout<<p<<"playershavestartedanewgame.Therearenow<<totalparticipants<<"playersintotal."}開始鍵入plto時,可以按Ctrl+空格鍵,以便自動完成功能將為您完成鍵入players的操在您對Cardgame.cpp文件進(jìn)行更改之后,該文件應(yīng)類似#include#include<iostream>usingnamespacestd;Cardgame::Cardgame(int{players=p;cout<<p<<"playershavestartedanewgame.Therearenow<<totalparticipants<<"playersintotal."}{}有關(guān)#include的更多信息,請參見The#includeDirective添加現(xiàn)在,為測試}有關(guān)#include的更多信息,請參見The#includeDirective添加現(xiàn)在,為測試類的主程序添加一個源代碼文件添加新源文在“解決方案資源管理器”中,右擊“源文件”文件夾,指向“添加”,然后單擊“新建項(xiàng)”文件(.cpp)”在testgames.cpp編輯窗口中,鍵入以下代#includeintmain(){=*bridge=*blackjack=*solitaire=*poker=bridge=blackjack=newsolitaire=newCardgame(1);deleteblackjack;deletepoker=new}有關(guān)此源文件中的C++關(guān)鍵字的信息,請參見newOperatorC++)和deleteOperator(C++)在“生成”菜單上,單擊“生成解決方案”來自生成的輸出應(yīng)顯示在“輸出”窗口中。這表示項(xiàng)目已編譯,并且未發(fā)來自生成的輸出應(yīng)顯示在“輸出”窗口中。這表示項(xiàng)目已編譯,并且未發(fā)生錯誤。如果未顯示輸出,請將您的碼與前面步驟中提供的代碼進(jìn)行比較演練:生成項(xiàng)目在本步驟中,您將故意在代碼中引入一 Visual 語法錯誤,以了解什么是編譯錯誤,以及如何修復(fù)它。編譯項(xiàng)時,會顯示錯誤消息以指示所發(fā)生的問題的性質(zhì)和位置IDE修復(fù)編譯錯在testgames.cpp中,刪除最后一行中的分號,使代碼如下所示return在“生成”菜單上,單擊“生成解決方案”“輸出”窗口中顯示一條消息,指示生成項(xiàng)目失單擊“輸出”窗口中的“轉(zhuǎn)到下一條消息”按鈕(指向右方的綠色箭頭)?!拜敵觥贝翱谥械腻e誤消息和狀態(tài)欄區(qū)指示右大括號前缺少一個分號若要查看有關(guān)錯誤的更多幫助信息,請突出顯示錯誤,并按F1鍵將分號重新添加到導(dǎo)致語法錯誤的行的末尾return在“生成”菜單上,單擊“生成解決方案”“輸出”窗口中顯示一條消息,指示項(xiàng)目已正確編譯演練:測試項(xiàng)目以“調(diào)試”模式運(yùn)行程序使您可以使用斷點(diǎn)來暫停程序,以檢查變量和對象的狀在本步驟中,您將在程序運(yùn)行時觀察變量的值,并推斷為什么值與預(yù)期的不同以“調(diào)試”模式運(yùn)行程如果“testgames.cpp”文件不可見,請在編輯區(qū)域中單擊該文件對應(yīng)的選項(xiàng)卡單擊以下行,將其設(shè)置為編輯器中的當(dāng)前行solitaire=new若要在該行上設(shè)置斷點(diǎn),請單擊“調(diào)試”菜單上的“切換斷點(diǎn)”,或者或清除若要在該行上設(shè)置斷點(diǎn),請單擊“調(diào)試”菜單上的“切換斷點(diǎn)”,或者或清除斷點(diǎn)F9。也可以單擊代碼行左側(cè)的區(qū)設(shè)置了斷點(diǎn)的代碼行的左側(cè)會顯示一個紅色圓在“調(diào)試”菜單上,單擊“開始調(diào)試”,或F5當(dāng)程序運(yùn)行到包含斷點(diǎn)的行時,執(zhí)行將暫時停止(因?yàn)槌绦蛱幱凇爸袛唷蹦J剑?。代碼行左側(cè)的黃色箭頭指示該是要執(zhí)行的下一個代碼行若要檢查Cardgame::totalparticipants變量的值,請將鼠標(biāo)指針懸停在該變量上方。該變量的名稱及其值12顯示在工具提示窗口中右 變量。選擇“表達(dá)式:‘totalparticipants’”,并單擊“添加監(jiān)視”以在“監(jiān)視”中顯示該變量。您也可以選擇該變量并將其拖動到“監(jiān)視”窗口在“調(diào)試”菜單上,單擊“逐過程”,或者按F10步進(jìn)到下一行代碼右擊main方法的最后一行(return0;),并單擊“運(yùn)行到光標(biāo)處”。代碼左側(cè)的黃色箭頭指向要執(zhí)行的下一個語0,這是因?yàn)樗械腃ardgame指針都已刪除,但是“1”窗口指示Cardgame::totalparticipants18代碼中存在一 bug,您將在下一節(jié)中檢測并修復(fù)它在“調(diào)試”菜單上,單擊“停止調(diào)試”或者按Shift-F5停止程序演練:調(diào)試項(xiàng)目在本步驟中,您將修改程序以修復(fù)在測試項(xiàng)目時發(fā)現(xiàn)的問題修復(fù)包bug的程 在“視圖”菜單上,單擊“類視圖”,或者單擊“解決方案資源管理器”窗口中的“類視圖”選項(xiàng)卡展開“游戲”項(xiàng)目樹并單擊“Cardgame”類下方的區(qū)域顯示類的成員和方法右擊“~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)試”菜單上,單擊“逐過程”或者按F10逐句通過程序。請注意,執(zhí)行每個Cardgame構(gòu)造函數(shù)后,totalparticipants的值會增大。而在刪除每個指針(并調(diào)用析構(gòu)單步執(zhí)行至程序的最后一行。恰好在執(zhí)行return語句之前,totalparticipants等于0。繼續(xù)逐句通過程序,到程序退出;或者,在“調(diào)試”菜單上,單擊“運(yùn)行”或F5,允許程序繼續(xù)運(yùn)行,直到退演練:部署程序現(xiàn)在,我們創(chuàng)建了應(yīng)用程序,最后一步是創(chuàng)建可供其他用戶在其計算機(jī)上安裝該程序的安裝程序。為此,我們需要將項(xiàng)目添加到現(xiàn)有解決方案。此新項(xiàng)目的輸出是setup.exe文件,該文件用于安裝我們之前在另一臺計算機(jī)上創(chuàng)建的應(yīng)程序創(chuàng)建安裝項(xiàng)目和安裝在“文件”菜單上,單擊“新建”,創(chuàng)建安裝項(xiàng)目和安裝在“文件”菜單上,單擊“新建”,再單擊“項(xiàng)目”隨即出現(xiàn)“添加新項(xiàng)目”在“已安裝的模板”“其他項(xiàng)目類型”“安裝和部署”節(jié)點(diǎn)并單擊ulStudoInste”。添將出現(xiàn)“安裝向?qū)А?。單擊“下一步”從向?qū)У摹斑x擇一種項(xiàng)目類型”窗格中,選擇“Windows應(yīng)用程序創(chuàng)建一個安裝程序”選項(xiàng),并單擊“下一步”從向?qū)У摹斑x擇要包括的項(xiàng)目輸出”窗格,選擇“主輸出來自游戲”,并單擊“下一步”繼續(xù)選擇要包括的文件下一步。完成創(chuàng)建項(xiàng)目?!敖鉀Q方案資源管理器”中將列出新的gameInstaller項(xiàng)目。此項(xiàng)目將列出應(yīng)用程序依靠的依賴項(xiàng)(如 運(yùn)行或.NETFramework)以及安裝程序中將包括的項(xiàng)目文件創(chuàng)建安裝項(xiàng)目后,有許多選項(xiàng)可以更改。有關(guān)更多信息,請參見VisualStudio部署通過在“解決方案資源管理器”中選擇安裝程序并從“生成”菜單單擊“生gameInstaller”來生成安裝程序找到上一節(jié)創(chuàng)建的setup.exe和gameInstaller.msi程序。在計算機(jī)上雙擊任一文件安裝創(chuàng)建命令行應(yīng)用程序我們已經(jīng)學(xué)VisualStudioIDE,現(xiàn)在可以開始使用VisualC++編寫程序了。我們將學(xué)習(xí)創(chuàng)建的第一個應(yīng)用程序類型是命令行應(yīng)用程序。命令行應(yīng)用程序不包含圖形用戶界面(GUI)。通常,命令行應(yīng)用程序從控制臺讀取輸入,并將輸出寫入該控制臺,而不是寫入圖形++程序。如果您希望使用Visual 創(chuàng)建在其他操作系統(tǒng)上使用的應(yīng)用程序,這將很有用演練:創(chuàng)建C++可以使用VisualC2010VisualStudio集成開發(fā)環(huán)(IDE)中創(chuàng)建標(biāo)準(zhǔn)C++程序。通過采用此演練中的步驟,您可以創(chuàng)建一個項(xiàng)目,向該項(xiàng)目添加一個新文件,修改該文件以添加C代碼,然后使用VisualStudio編譯并運(yùn)行程序您可以鍵入自己 程序,或者使用示例程序之一。此演練中的示例程序是一個控制臺應(yīng)用程序。此應(yīng)用程序使標(biāo)準(zhǔn)模(STL)中的set容器VisualC++使用2003C++標(biāo)準(zhǔn)進(jìn)行編譯,但有以下幾點(diǎn)主要例外之處:兩階段名稱查找、異常規(guī)范和導(dǎo)出。此VisualC++支持若干C++0x功能,例如,lambda、自動、static_assert、rvalue引用extern模板創(chuàng)建項(xiàng)目并添加源文通過以下方式創(chuàng)建一個項(xiàng)目:指向“文件”菜單上創(chuàng)建項(xiàng)目并添加源文通過以下方式創(chuàng)建一個項(xiàng)目:指向“文件”菜單上的“新建”,然后單擊“項(xiàng)目”在“VisualC++”項(xiàng)目類型窗格中,單擊“Win32”,然后單擊“Win32控制臺應(yīng)用程序”。默認(rèn)情況下,包含項(xiàng)目的解決方案與項(xiàng)目同名,但您可以鍵入其他名稱。您也可以為項(xiàng)目鍵入其他位置單擊“確定”創(chuàng)建項(xiàng)在應(yīng)用程序向?qū)А敝校瑔螕簟跋乱徊健保x擇“空項(xiàng)目”,然后單擊“完成”如果未顯示“解決方案資源管理器視圖解決方案資源管理器。 在“解決方案資源管理器”中,右擊“源文件”文件夾,指向“添加”,然后單擊“新建項(xiàng)” 在“代碼”節(jié)點(diǎn)中單擊文件(.cpp)”,為文件鍵入名稱,然后單擊“添加”該.cpp文件即顯示在“解決方案資源管理器”中的“源文件”文件夾中,并且文件將在VisualStudio編輯器中開在編輯器內(nèi)的文件中,鍵入使用標(biāo)準(zhǔn)C++庫的有效C++程序,或者復(fù)制示例程序之一并將其粘貼在文件中例如,您可以使用 Samples)示例程序,該程序是幫助中附帶的標(biāo)準(zhǔn)模板庫示例之一如果使用該示例程序usingnamespacestd;指令。此指令使程序能夠使用coutendl,而無定名(std::coutstd::endl)保存該文件在“生成”菜單上,單擊“生成解決方案”“輸出”窗口顯示有關(guān)編譯過程的信息,例如,生成日志的位置,以及指示生成狀態(tài)的消在“調(diào)試”菜單上,單擊“開始執(zhí)行(不調(diào)試)”如果使用了示例程序,將顯示一個命令窗口,其中顯示是否在集合中找到了演練:在命令行上編譯C++VisualC++包括一個C++編譯器,可用來創(chuàng)建從基本VisualC++程序到Windows窗體應(yīng)用程序和組件的各種程通過按此演練的過程進(jìn)行操作,您可以通過使用文本編輯器創(chuàng)建基本 Visual譯程序,然后在命令行上對其進(jìn)也可VisualStudio集成開發(fā)環(huán)(IDE)創(chuàng)建VisualC++程序。有關(guān)更多信息,請參見演練:在Studio中編譯面向CLRC++(C++)代碼示例程序VisualC++源文件并在命令行上對其進(jìn)行打開“VisualStudio2010命令提示”窗口,方法是單擊“開始”,指向“所有程序”、“MicrosoftVisual2010”、“VisualStudio工具”,然后單擊“VisualStudio2010命令提示”可能需要管理員憑據(jù)才能成功編譯此演練中的代碼,具體情況視計算機(jī)的操作系統(tǒng)和配置而定。若要以身份運(yùn)行“VisualStudio2010命令提示”窗口,請右擊“VisualStudio2010命令提示”,然后單擊“以管理員在命令提示符下,鍵入notepadbasic.cpp,并按Enter在系統(tǒng)提示是否創(chuàng)建文件時,單擊“是”在記事本中,鍵入下列各行#includeint{std::cout<<"ThisisanativeC++return0;}program."<<在“文件”菜單上,單擊“保存”這樣就創(chuàng)建了一個VisualC++源文件關(guān)閉記事本在命令提示符下,鍵入cl/EHscbasic.cpp,并按Enter。/EHsc命令行選項(xiàng)指示編譯器啟用C++異常處理。關(guān)更多信息,請參見/EH(異常處理模型)cl.exe編譯器將生成basic.exe的可執(zhí)行程序您可以在編譯器顯示的多行輸出信息中看到可執(zhí)行程序的名若要查看目錄中具有名稱basic以及任何文件擴(kuò)展名的文件的列表,請鍵入dirbasic.*并按Enter 文件是一個中間格式文件,可以安全地忽略它若要運(yùn)行basic.exe程序,請鍵入basic并按Enter該程序顯示以下文本并退出ThisisanativeC++ 若要關(guān)閉“VisualStudio2010命ThisisanativeC++ 若要關(guān)閉“VisualStudio2010命令提示”窗口,請鍵入exit并按Enter編譯使用.NET類的VisualC++程下面的步驟演示如.NETFramework類的VisualC++您必須使用/clr(公共語言運(yùn)行時編譯編譯器選項(xiàng),因?yàn)榇顺绦蚴褂?NET類并且必須包括必要的.NET庫。Visual編譯器生成的.exe文件MSIL代碼,而不是可由計算機(jī)執(zhí)行的指按照本過程中的步驟編譯幫助主題中的任何VisualC++示例程序在命令行上VisualC++NET控制臺應(yīng)用程打開“VisualStudio2010命令提示”窗口,方法是單擊“開始”,指向“所有程序”、“MicrosoftVisual2010”、“VisualStudio工具”,然后單擊“VisualStudio2010命令提示”可能需要管理員憑據(jù)才能成功編譯此演練中的代碼,具體情況視計算機(jī)的操作系統(tǒng)和配置而定。若要以身份運(yùn)行“VisualStudio2010命令提示”窗口,請右擊“VisualStudio2010命令提示”,然后單擊“以管理員在命令提示符下,鍵入notepadbasicclr.cpp,并按Enter在系統(tǒng)提示是否創(chuàng)建文件時,單擊“是”在記事本中,鍵入下列各行int{System::Console::WriteLine("ThisisaVisualC++}在“文件”菜單上,單擊“保存”您已經(jīng)創(chuàng)建了一個使用.NET(Console)VisualC++源文件,該文件位于System命名空關(guān)閉記事本在命令提示符下,鍵入clclrbasicclr.cpp,并按Enter。cl.exe編譯器將生成一個名為basicclr.exe的可執(zhí)行若要查看目錄中具有basicclr以及任何文件擴(kuò)展名的文件的列表,請鍵入dirbasicclr.*并按Enter 文件是一個中間格式文件,可以安全地忽略它.manifest文件是包含有關(guān)程序XML文件。(程序集是.NET部署單元.exe程序.manifest文件是包含有關(guān)程序XML文件。(程序集是.NET部署單元.exe程序或.dll件或庫。 若要運(yùn)行basicclr.exe程序,請鍵入basicclr并按Enter該程序顯示以下文本并退出ThisisaVisualC++ 若要關(guān)閉“VisualStudio2010命令提示”窗口,請鍵入exit并按Enter演練VisualStudio中編譯面CLRC++通過使用VisualStudio開發(fā)環(huán)境,您可以創(chuàng)建使用.NET類VisualC++程序,并對它們進(jìn)行編譯在本過程中,您可以鍵入自己 Visual程序,也可以使用示例程序之一。本過程中使用的示例程序創(chuàng)建一個的文本文件,并將其保存到項(xiàng)目目錄中VisualStudio中創(chuàng)建新項(xiàng)目并添加新的在“VisualC++項(xiàng)目類型”中單擊“CLR”,然后單擊“CLR空項(xiàng)目”。鍵入項(xiàng)目名稱默認(rèn)情況下,包含項(xiàng)目的解決方案與新項(xiàng)目同名,當(dāng)然,您也可以鍵入其他名稱。如果愿意,您可以為入一個不同的位置單擊“確定”創(chuàng)建新項(xiàng)目如果“解決方案資源管理器”不可見,請單擊“視圖”菜單上的“解決方案資源管理器”向該項(xiàng)目添加新的源文件在解決方案資源管理器中右擊“源文件”文件夾,指向“添加”并單擊“新建項(xiàng)...”單擊文件(.cpp)”,鍵入一個文件名,然后單擊“添加”該文件即顯示在“解決方案資源管理器”中的“源文件”文件夾中,并且,在鍵入要包含在該文件中的代碼位置,出現(xiàn)一個選項(xiàng)卡式窗口在VisualStudio中,在新創(chuàng)建的選項(xiàng)卡中單擊并鍵入有效的VisualC++程序,或者復(fù)制并粘貼示例程序之一例如,您可以使用如何:編寫文本文件示例程序(位于“編程指南”中的“文件處節(jié)點(diǎn))如果要使用示例程序,請注意在創(chuàng)建.NET對象時,您可以使用gcnew關(guān)鍵字(而非new),且gcnew返一個句柄(^)而不StreamWriter^sw=gcnew有關(guān)新VisualC++語法的更多信息,請參見LanguageFeaturesfor有關(guān)新VisualC++語法的更多信息,請參見LanguageFeaturesforTargetingtheCLR在“生成”菜單上,單擊“生成解決方案”“輸出”窗口顯示有關(guān)編譯過程的信息,如生成日志的位置,以及指示生成狀態(tài)的消息如果進(jìn)行了更改,并在未執(zhí)行生成的情況下運(yùn)行該程序,則對話框可能指示該項(xiàng)目已過期。如果要 Studio始終使用文件的當(dāng)前版本,并且在每次生成應(yīng)用程序時不發(fā)出提示,請在單擊“確定”之前選中此對話框在“調(diào)試”菜單上,單擊“開始執(zhí)行(不調(diào)試)”文本文件現(xiàn)在位于您的項(xiàng)目目錄中。您可以使用記事本打開此文件演練:編C程VisualC2010中包括C編譯器,可用來創(chuàng)建從基本的C程序到WindowsAPI應(yīng)用程序的此演練演示如何使用文本編輯器創(chuàng)建一個基本 程序,然后在命令行上對其進(jìn)行編您可以使用自己的C程序,而不是鍵入此演練中所示的示例程序。也可以使用幫助主題中包含的任何C代碼示默認(rèn)情況下,VisualC++編譯器將以.c結(jié)尾的所有文件視為C源代將以.cpp結(jié)尾的所有文件視為C++源代碼若要強(qiáng)制編譯器將所有文件視 C(而不管文件擴(kuò)展名如何),請使用/Tc編譯器選項(xiàng)C源文件并在命令行上對其進(jìn) 單擊“開始”,指向“所有程序”、“MicrosoftVisualStudio2010”和“VisualStudio工具”,然后單擊Studio2010命令提示”根據(jù)計算機(jī)上的Windows版本和系統(tǒng)安全配置,可能必須右擊“VisualStudio2008命令提示”,然后單擊“管理員身份運(yùn)行”,才能成功運(yùn)行按下列步驟創(chuàng)建的應(yīng)用程序說“VisualStudio2010命令提示”會自動設(shè)置C編譯器和所需的任何庫的正確路徑。應(yīng)使用它而不是使用普通的“命令提說選擇空 項(xiàng)目模板會自動設(shè)置/clr編譯器選項(xiàng)。若要驗(yàn)證這一點(diǎn),請在“解決方案資源管理器”中右擊該項(xiàng)目,再單“屬性”,然后選中“配置屬性”的“常規(guī)”節(jié)點(diǎn)中的“公共語言運(yùn)行時支持”在命令提示符下,鍵入notepadsimple.c,并按Enter在系統(tǒng)提示是否創(chuàng)建文件時,單在命令提示符下,鍵入notepadsimple.c,并按Enter在系統(tǒng)提示是否創(chuàng)建文件時,單擊“是”在記事本中,鍵入下列各行#includeint{printf("ThisisanativeCprogram.\n");return0;}在“文件”菜單上,單擊“保存”,以創(chuàng)建C源文件。在命令提示符下,鍵入clsimple.c,并按Entercl.exe編譯器將生成一個可執(zhí)行程序Simple.exe您可以在編譯器顯示的多行輸出信息中看到可執(zhí)行程序的名32‐bitC/C++OptimizingMicrosoftCorporation.AllrightsIncrementalLinkerVersion10.00MicrosoftCorporation.AllVersion16.00for若要查看\simple\目錄中的所有文件的列表,請鍵入dirsimple.*并按Enter文件是一個中間格式文件,可以安全地忽略它若要運(yùn)行Simple.exe,請鍵入simple并按Enter該程序顯示以下文本并退出ThisisanativeC若要關(guān)閉命令提示符窗口,請鍵入exit并按Enter創(chuàng)建Windows應(yīng)用現(xiàn)在VisualStudioIDE和命令行應(yīng)用程序,下面將學(xué)習(xí)如何創(chuàng)建Windows應(yīng)用程序。使用Visual可以通過使用多種不同的技術(shù)來創(chuàng)建Windows應(yīng)用程序,如WindowsAPI(也稱為Win32API)和.NETFramework在本節(jié)中,我們將通過使用Win32API.NETFramework創(chuàng)建兩個簡單的Windows在本節(jié)中,我們將通過使用Win32API.NETFramework創(chuàng)建兩個簡單的Windows應(yīng)用程序。我們還將通.NETFramework創(chuàng)建Windows窗體控件,最后將通過DirectX創(chuàng)建一個簡單的游戲創(chuàng)建Win32應(yīng)用程序I在WindowsAPI中可以找到有關(guān)此API的大量文檔在本過程中,我們將創(chuàng)建向窗口顯示“Hello,World!”的簡單Win32應(yīng)用程序。過程中的步驟對于所有Win32應(yīng)用程都是相同的。完成此過程后,您可以將這里創(chuàng)建的代碼用作創(chuàng)建任何其 應(yīng)用程序的主干創(chuàng)建新Win32項(xiàng)在“文件”菜單上,單擊“新建”,然后單擊“項(xiàng)目...”在“項(xiàng)目類型”窗格中,選擇“VisualC++”節(jié)點(diǎn)中的“Win32”,然后在“模板”窗格中選擇項(xiàng)目”鍵入項(xiàng)目的名稱, win32app。您可以接受默認(rèn)位置、鍵入一個位置或者導(dǎo)航到要保存項(xiàng)目的目錄在應(yīng)用程序向?qū)А敝?,選擇“下一步” 文件(.cpp)”為文件鍵入一個名稱, GT_HelloWorldWin32.cpp,并單擊“添加”Win32應(yīng)用程 正如您所了解的,每個CC++應(yīng)用程序main函數(shù)。此函數(shù)是應(yīng)用程序的起始點(diǎn)在Win32應(yīng)用程序中,每個應(yīng)用程序必須具有一個WinMain函數(shù)。WinMain的語法如intWINAPIWinMain(HINSTANCELPSTRlpCmdLine,int有關(guān)此函數(shù)的參數(shù)和返回值的解釋,請參見函數(shù)因?yàn)閼?yīng)用程序代碼必須使用現(xiàn)有的定義,所以應(yīng)語句添加到文件中以使用它們外,每個Win32應(yīng)用程序還必須具有第二個函數(shù)(通常稱為WndProc),它代表窗口過WndProc的語法如下所示LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,此函數(shù)的用途是處理應(yīng)用程序從操作系統(tǒng)LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,此函數(shù)的用途是處理應(yīng)用程序從操作系統(tǒng)接收的任何消息。應(yīng)用程序何時從操作系統(tǒng)接收消息?始終接知道某位用戶按下了此按鈕。WndProc函數(shù)負(fù)責(zé)響應(yīng)該事件。在本示例中,適當(dāng)?shù)捻憫?yīng)可能是關(guān)閉對話框有關(guān)更多信息,請參見窗口過程WinMain添加功首先,在WinMain函數(shù)內(nèi)部創(chuàng)建WNDCLASSEX類型的窗口類結(jié)構(gòu)結(jié)構(gòu)包含有關(guān)窗口的信息,如應(yīng)用程序圖標(biāo)窗口的背景色、在標(biāo)題欄中顯示的名稱、窗口過程函數(shù)的名稱等等。典型的WNDCLASSEX結(jié)構(gòu)如WNDCLASSEXwcex.cbSize==CS_HREDRAW|=====LoadIcon(hInstance,=LoadCursor(NULL,==LoadIcon(wcex.hInstance,=wcex.lpszClassName=有關(guān)此結(jié)構(gòu)的字段解釋,請參見WNDCLASSEX現(xiàn)在已經(jīng)創(chuàng)建了窗口類,接下來您必須注冊它。使用RegisterClassEx函數(shù),并將窗口類結(jié)構(gòu)作為參數(shù)傳if{_T("CalltoRegisterClassEx_T("Win32GuidedTour"),return}現(xiàn)在已經(jīng)注冊了您自己的類,接下來創(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,它是某個窗口的句柄。有關(guān)更多信息,請參見數(shù)據(jù)類型創(chuàng)建了窗口后,我們可以使用以下代碼將其顯示在屏幕上//TheparameterstoShowWindow//hWnd:thevaluereturnedfrom//nCmdShow:thefourthparameterfromWinMain到目前為止,此窗口還不會顯示,因?yàn)槲覀兩形磳?shí)現(xiàn)WndProc的最后一步是消息循環(huán)。此循環(huán)的用途是偵聽操作系統(tǒng)發(fā)送的最后一步是消息循環(huán)。此循環(huán)的用途是偵聽操作系統(tǒng)發(fā)送的消息。應(yīng)用程序收到消息后,將調(diào)度到WndProc函數(shù),以便進(jìn)行處理。消息循環(huán)類似于MSGwhile(GetMessage(&msg,NULL,0,{}return(int)有關(guān)消息循環(huán)中使用的結(jié)構(gòu)和函數(shù)的更多信息,請參見MSGGetMessageTranslateMessage和DispatchMessage您剛才完成的步驟為大多數(shù)Win32應(yīng)用程序所共用。有關(guān)此應(yīng)用程序所需要的include指令和全局變量聲明請參見本主題末尾的完整代碼示例此時,WinMain函數(shù)應(yīng)該與下面的內(nè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)此操作我們將處理的第一個消息是WM_PAINT消息。當(dāng)必須更新應(yīng)用程序窗口的一部分時,應(yīng)用程序會收到此消息次創(chuàng)建窗口時,必須更新整個窗口,并傳遞此消息以指示此操作當(dāng)處理WM_PAINT消息時,首先應(yīng)做的是調(diào)用BeginPaint,最后應(yīng)做的是調(diào)用EndPaint。在這兩個函數(shù)調(diào)用間,您可以處理所有的邏輯,以在窗口中排列文本、按鈕和其他控件。對于此應(yīng)用程序,我們在窗口中符串World!”。若要顯示文本,請使用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)用程序通常會處理許多其他消息,如WM_CREATE和WM_DESTROY。一個簡單而完整的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}示說生成菜單選擇生成解決方案5“Heo,orld!”的簡單窗口代////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}通過.NETFramework創(chuàng)建Windows窗體應(yīng)用使用Visual并無不同開發(fā)Windows窗體項(xiàng)目,通常與使用任.NET語言(如VisualBasicVisualC#)進(jìn)行使用VisualC++編寫Windows窗體應(yīng)用程序通過新的VisualC++語法使用.NETFramework類和其他.NET在本過程中,您將使用工具箱中的幾種標(biāo)準(zhǔn)控件創(chuàng) 個日期,此時將出現(xiàn)一個文本標(biāo)簽,顯示用戶選擇的日期窗體應(yīng)用程序。用戶可以在完成后的應(yīng)用程序中選創(chuàng)建新的Windows窗體項(xiàng)在“文件”菜單上,單擊“新建”,然后單擊“項(xiàng)目”在“項(xiàng)目類型”窗格中,選擇“VisualC++”節(jié)點(diǎn)中的“CLR”,然后在“模板”窗格中選擇窗體應(yīng)用程序”鍵入項(xiàng)目的名稱,如“winformsapp”。您可以接受默認(rèn)位置、鍵入一個位置或者導(dǎo)航到要保存項(xiàng)目的目隨即打開 窗體設(shè)計器,顯示所創(chuàng)建項(xiàng)目的“Form1”,如下所示向窗體添加控如果看不到“工具箱”窗口,請在“視圖”菜單上單擊“工具箱”將“工具箱”中的三個控件放到“Form1”設(shè)計圖面上將一個Button控件拖動到窗體底部靠近中心點(diǎn)的位置窗體應(yīng)該與下面的內(nèi)容類似設(shè)置窗體和控件的屬單擊窗體圖面上的空白區(qū)域以選擇窗體如果沒有顯示“屬性窗口”,請單擊“視圖”菜單上的“屬性窗口”(F4)您可能需要關(guān)閉“工具箱”以獲得更多空間設(shè)置窗體的“Text”屬性(顯示在窗體標(biāo)題欄中),方法是在“屬性窗口”中“Text”屬性的右側(cè)單擊,并鍵日期選擇單擊以選擇標(biāo)簽,將其“Text”屬性設(shè)置為“選擇日期:”單擊以選擇按鈕,將其“Text”屬性設(shè)置為“確定”窗體應(yīng)該與下面的內(nèi)容類似編寫事件處理程序在本節(jié)中,您將編寫在發(fā)生以下事編寫事件處理程序在本節(jié)中,您將編寫在發(fā)生以下事件時運(yùn)行的代碼Button控件上的ClickDateTimePicker控件上的ValueChanged編寫代碼以雙擊按鈕以添加按鈕Click事件處理程序(按鈕的默認(rèn)事件為Click事件)在選項(xiàng)卡頁的編輯區(qū)域中顯示的窗體的“代碼”視圖中,此操作創(chuàng)建了一個空事件處理程序方法將光標(biāo)移動到 方法的左大括號之后,并鍵入在發(fā)生該事件時運(yùn)行的以下代碼在鍵入范圍解析運(yùn)算符(::)之后,IntelliSense將顯示可能的有效選項(xiàng)的列表。您可以從該列表中選擇一個選并按Tab,雙擊它,或者繼續(xù)鍵返回“設(shè)計”.h[設(shè)計選項(xiàng)卡,或者單擊“視圖菜單上的設(shè)計器。單擊DateTimeicke控件。雙擊“ValueChanged”事件,在“代碼”視圖中生成一個空事件處理程序說還將一行代碼添加到niiComponnt函數(shù)中,此函數(shù)創(chuàng)建事件處理程序,并將其分配給與控件相關(guān)聯(lián)的“單擊”字段。如果您雙擊“設(shè)計”視圖中的控件以添加相關(guān)代碼,然后決定稍后移除它,則刪除兩個添加項(xiàng)(不僅僅是空的事件處理程序)。 將光標(biāo)移動到dateTimePicker1_ValueChanged方法的左大括號之后,按 將光標(biāo)移動到dateTimePicker1_ValueChanged方法的左大括號之后,按Enter鍵,并鍵入在發(fā)生該行的以下代碼label1->Text=String::Format("Newdate:{0}",dateTimePicker1-當(dāng)應(yīng)用程序的用戶選擇了新的日期時,標(biāo)簽的Text屬性將設(shè)置為后跟DateTimePicker的Text屬性的字符VisualStudio提供了幾個可以簡化代碼鍵入的功能當(dāng)鍵入箭頭運(yùn)算符(->)時,IntelliSense將顯示可從中選擇的有效選項(xiàng)列表自動完成可以根據(jù)您已鍵入的部分完成變量名或成員的鍵入。例如,如果鍵入了String::Fo并按空格鍵或Tab,VisualStudio將自動完成鍵入String::Format生成并運(yùn)行程在“生成”菜單中,單擊“生成解決方案”如果存在錯誤,請單擊“輸出”窗口中的“轉(zhuǎn)到下一條消息”按鈕。錯誤消息文本顯示在狀態(tài)欄中。您可以雙擊何錯誤,轉(zhuǎn)到源代碼中包含該錯誤的行在“調(diào)試”菜單中,單擊“不進(jìn)行調(diào)試直接運(yùn)行”。將顯示您生成的應(yīng)用程序您可以向此應(yīng)用程序添加更多功能,如菜單、其他窗體和幫助文件。不要畏懼實(shí)驗(yàn)說ValueChanged是DateTimePicker控件的默認(rèn)事件。因此,您還可以雙擊DateTimePicker控件,以生成空事件處理程序創(chuàng)建Windows窗體創(chuàng)建Windows窗體C++Windows窗體應(yīng)用程序通過新的VisualC++語法使用.NETFramework.NET功能在本過程中,您將創(chuàng)建顯示數(shù)字 窗體控件。用戶每次單擊應(yīng)用程序中的標(biāo)簽時將遞增此數(shù)字。您還一個Windows窗體應(yīng)用程序項(xiàng)目來測試該控本演練涵蓋以下內(nèi)運(yùn)行應(yīng)用程序創(chuàng)建在本節(jié)中,您將使用窗體控件”項(xiàng)目模板創(chuàng)建一個用戶控件,該控件是一個包含其他控件的復(fù)體控創(chuàng)建新的Windows窗體控件項(xiàng)在“文件”菜單上,單擊“新建”,再單擊“項(xiàng)目…”在“項(xiàng)目類型”窗格中,選擇“VisualC++”節(jié)點(diǎn)中的“CLR”,然后在“Visual“Windows窗體控件庫”已安裝的模板”窗格中選鍵入項(xiàng)目的名稱,如“clickcounter”為解決方案鍵入一個不同的名稱,如“controlandtestapp”您可以接受默認(rèn)位置、鍵入所需的位置或者導(dǎo)航到要保存項(xiàng)目的目錄窗體設(shè)計器將打開并顯示一個區(qū)域,您可以將要放置到控件設(shè)計圖面上的控件添加到該區(qū)域中設(shè)計控在本步驟中,您要將一個Label控件添加到控件設(shè)計圖面中。然后,設(shè)置控件本身及其包含的Label控件的一些屬性設(shè)置用戶控如果沒有顯示“屬性”窗口,請單擊“視圖設(shè)置用戶控如果沒有顯示“屬性”窗口,請單擊“視圖”菜單上的“屬性窗口”在 窗體設(shè)計器中,單擊控件將其選中并按如下方式設(shè)置它的屬性將“Size”屬性設(shè)置為“100,100”將“BorderStyle”設(shè)置為“Fixed3D”將控件放置到應(yīng)用程序中后,將顯示標(biāo)簽的邊如果“工具箱”窗口不可見,請從“視圖”菜單中選擇“工具箱”將一個Label控件從“工具箱”拖動到設(shè)計圖面上,將其放置在靠近控件中心的位置設(shè)置標(biāo)簽的下列屬將“Size”設(shè)置為“30,20”。將“TextAlign”設(shè)置為“MiddleCenter”保留“Name”屬性(在代碼中將使用它來引用該控件)為“l(fā)abel1”。該控件應(yīng)如通過雙擊標(biāo)簽,為標(biāo)簽的Click事件(標(biāo)簽的默認(rèn)事件)添加事件處理程序文件將顯示在編輯區(qū)域中,并附帶一個空事件處理程序方將光標(biāo)移動到label1_Click方法的左大括號之后,按Enter并鍵入以下內(nèi)容inttemp=label1‐>Text=說如果需要更多空間,可以關(guān)閉“工具箱”或“屬性”窗口,方法是單擊相應(yīng)的“關(guān)閉”框,或者解除窗口鎖定使其自動隱藏在鍵入范圍解析運(yùn)算符(::)、點(diǎn)運(yùn)算符(.)或箭頭運(yùn)算符(->)之在鍵入范圍解析運(yùn)算符(::)、點(diǎn)運(yùn)算符(.)或箭頭運(yùn)算符(->)之后,IntelliSense將顯示有效選項(xiàng)的列表。以通過突出顯示某個項(xiàng)并按Tab或Enter,或者通過雙擊某個項(xiàng),將該項(xiàng)插入代碼此外,當(dāng)鍵入方法的左括號時,Visual將顯示該方法的每個重載的有效參數(shù)類向控件添加自定義在本步驟中,您將定義一個自定義屬性,它確定控件上顯示的數(shù)字是在用戶單擊標(biāo)簽時遞增還是在用戶單擊控件上的何位置時遞增向控件添加自定義屬然后鍵入以下內(nèi)容propertyboolClickAnywhereboolget()return(label1‐>Dock}voidset(bool{if}}==當(dāng)控件的ClickAnywhere屬性設(shè)置時,標(biāo)簽的Dock屬性將設(shè)置為DockStyle::Fill,該標(biāo)簽將占據(jù)整個件圖面。單擊控件圖面上的任何位置將引發(fā)標(biāo)簽的Click事件,使標(biāo)簽上的數(shù)當(dāng)ClickAnywhere屬性false(默認(rèn)值)時,標(biāo)簽的Dock屬性將設(shè)置為DockStyle::None。標(biāo)簽不填件,并且單擊控件時,必須單擊標(biāo)簽邊框內(nèi)部才會引發(fā)標(biāo)簽的Click事件,使數(shù)字遞增生成用戶控件。在“生成”菜單上,選擇“生成解決方案”如果沒有錯誤,將生成文件名為clickcounter.dll的 窗體控件。您可以在項(xiàng)目目錄結(jié)構(gòu)中找到此文件添加用于測試控件在本步驟中,要創(chuàng)建一 窗體應(yīng)用程序項(xiàng)目,您將在其中的一個窗體上放置“clickcounter”控件的實(shí)例Windows窗體應(yīng)用程序項(xiàng)在“文件”菜單上選“新建”,然后單擊“項(xiàng)目Windows窗體應(yīng)用程序項(xiàng)在“文件”菜單上選“新建”,然后單擊“項(xiàng)目…”也可以通過以下方法將項(xiàng)目添加到解決方案中:右擊“解決方案資源管理器”中加”,然后單擊“新建項(xiàng)目...”解決方案,指向“在“項(xiàng)目類型”窗格中,選擇“VisualC++”節(jié)點(diǎn)中的“CLR”,然后在“Visual“Windows窗體應(yīng)用程序”已安裝的模板”窗格中選鍵入項(xiàng)目的名稱,如“testapp”確保選擇“添入解決方案”,而不是接受“解決方案”下拉列表中默認(rèn)的“創(chuàng)建新解決方案”然后單擊“確定”將為新項(xiàng)目打 窗體設(shè)計器,其中顯示一個名為“Form1”的新窗體,如下圖所示將控件添加添加對控件的引用。右擊“解決方案資源管理器”中 項(xiàng)目,然后單擊“引用”單擊“添加新引用”按鈕,單擊“項(xiàng)目”選項(xiàng)卡(這是在此解決方案中添加對另一個項(xiàng)目的引用),然后選clickcounter項(xiàng)目。單擊“確定”兩次如果看不到“工具箱”窗口,請從“視圖”菜單中選擇“工具箱”如果在工具箱中找不到帶有“齒輪”圖標(biāo)控件,則右擊“工具箱”,然后單擊“選擇項(xiàng)”單擊“瀏覽”按鈕,定位到解決方案目錄結(jié)構(gòu)中的 文件。選擇該文件并單擊“打開”clickcounter控件即出現(xiàn)在“.NET組件”列表中,并帶有一個選中標(biāo)記。單擊“確定”說您所創(chuàng)建的用于測試控件的Windows窗體應(yīng)用程序可以使用VisualC++.NET語言(如C#VisualBasic)控件即顯示在“工具箱”中,帶有默認(rèn)的“齒輪”將控件放在應(yīng)用程控件即顯示在“工具箱”中,帶有默認(rèn)的“齒輪”將控件放在應(yīng)用程在本步驟中,您要將控件的兩個實(shí)例放到應(yīng)用程序窗體上并設(shè)將控件的實(shí)例放置到窗從“工具箱”拖出 控件的兩個實(shí)例。將它們放在窗體上,避免使其重疊如果需要加寬窗體,請單擊以選擇窗體,向外拖動一個選擇手柄如果看不到“屬性”窗口,請從“視圖”菜單選擇“屬性”如果屬性是按類別組織的,“ClickAnywhere”屬性將位于“屬性窗口”的“雜項(xiàng)”單擊以選擇窗體上的clickcounter控件實(shí)例,然后將其“ClickAnywhere”屬性設(shè)置為true。將clickcounter控件的另一個實(shí)例的“ClickAnywhere”屬性設(shè)置為false(默認(rèn)值)。在解決方案資源管理器中,右擊 項(xiàng)目,并選擇“設(shè)為啟動項(xiàng)目”從“生成”菜單中選擇“重新生成解決方案”您應(yīng)當(dāng)看到生成了兩個項(xiàng)目,并且沒有出現(xiàn)錯運(yùn)行應(yīng)用程在本步驟中,您將運(yùn)行應(yīng)用程序,并單擊控件測試它們測試應(yīng)用程 從“調(diào)試”菜單中選擇“啟動調(diào)試”將顯示窗體,其中控件的兩個實(shí)例都可見 運(yùn)行應(yīng)用程序并單擊兩個“clickcounter”單擊“ClickAnywhere”設(shè)置為true的控件單擊控件上的任何位置,標(biāo)簽上的數(shù)字都會遞單擊“ClickAnywhere”設(shè)置為false的控件僅當(dāng)在標(biāo)簽的可見邊框內(nèi)單擊時,標(biāo)簽上的數(shù)字才會遞增。下面的屏幕快照演示了應(yīng)用程序在單擊數(shù)后的外觀情況 單擊“Form1”窗口右上角的“關(guān)閉”框,關(guān) 單擊“Form1”窗口右上角的“關(guān)閉”框,關(guān)閉測試應(yīng)用程序使用DirectX創(chuàng)建游戲++++管代碼編寫游戲。此靈活性允許您在最熟悉的平臺上創(chuàng)建游創(chuàng)建一個好游戲不是一件輕而易舉的事,這不在本指導(dǎo)教程的范圍內(nèi)。如果要創(chuàng)建游戲,請查看下面的鏈接,其中的息可以幫助您創(chuàng)建第一個游戲圖形編程入若要使用DirectX創(chuàng)建游戲,您必須從以下位置DirectXSDK:DirectXDeveloperCenter(DirectX開發(fā)人員中心)。安裝了SDK后,您會發(fā)現(xiàn)幾個示例,這些示例將幫助您了解DirectX編程的入門知識。在MSDN上查看VisualC++ExpressEdition網(wǎng)頁,獲得可以下載、學(xué)習(xí)和隨意修改的現(xiàn)有游戲。在該頁面您可以從MicrosoftResearch下載游戲,甚至可以下載流行游戲QuakeII.NET的完整源代碼創(chuàng)建可重用代碼多任何CC++應(yīng)用程序都可以使用的庫,如C運(yùn)行庫和標(biāo)準(zhǔn)C++庫。如果沒有這些庫CC++應(yīng)用程序沒有寫入控制臺或確定當(dāng)前日期和時間的標(biāo)準(zhǔn)方法每個C或C++應(yīng)用程序都可能用到前面提到的庫之一。您還可以創(chuàng)建任何應(yīng)用程序都可以使用的自己的類和算法VisualC++,您可以創(chuàng)建三種類型的庫使托管程序集通常,如果創(chuàng)建可供本 代碼使用的庫,則可以創(chuàng)建動態(tài)鏈接通常,如果創(chuàng)建可供本 代碼使用的庫,則可以創(chuàng)建動態(tài)鏈接庫或靜態(tài)庫。有關(guān)如何確定應(yīng)創(chuàng)建何種類型庫多信息,請參見DLL。如果要創(chuàng)C++/CLI或任何其他.NET語言(如C#VisualBasic)使用的庫,則應(yīng)創(chuàng)托管程在本部分中,我們將創(chuàng)建簡單的標(biāo)準(zhǔn)數(shù)學(xué)運(yùn)算(如加法和乘法)庫,并將演示應(yīng)用程序如演練:創(chuàng)建和使用動態(tài)鏈接我們將創(chuàng)建的第一種類型的庫是動態(tài)鏈接庫(DLL)。使用 是一種重用代碼的絕佳方式。您不必在自己創(chuàng)建的每個序中重新實(shí)現(xiàn)同一例程,而只需對這些例程編寫一次,然后從需要該功能的應(yīng)用程序引用本演練涵蓋以下內(nèi)創(chuàng)建新的動態(tài)鏈接庫(DLL項(xiàng)目。創(chuàng)建引用動態(tài)鏈接庫的應(yīng)用程序創(chuàng)建新的動態(tài)鏈(DLL)從“文件”菜單中,選擇“新建”,然后選擇“項(xiàng)目…”在“模板”窗格中,選擇“Win32控制臺應(yīng)用程序”。單擊“確定”啟動Win32應(yīng)用程序向?qū)АT凇癢in32應(yīng)用程序向?qū)А睂υ捒虻摹案攀觥表撝?,單擊“下一步”在“Win32應(yīng)用程序向?qū)А敝械摹皯?yīng)用程序設(shè)置”“應(yīng)用程序類型”下的“DLL”(如果可用),或者選擇“制臺應(yīng)用程序”(如果“DLL”不可用)。某些版本的VisualStudio不支持通過使用向?qū)?chuàng)建DLL項(xiàng)目。您可以稍后對此進(jìn)行更改,以將項(xiàng)目編譯為DLL。在應(yīng)用程序向?qū)А钡摹皯?yīng)用程序設(shè)置”頁中,選擇“附加選項(xiàng)”下的“空項(xiàng)目”單擊“完成”創(chuàng)建項(xiàng)向動態(tài)鏈接“項(xiàng)目”菜單中選擇“添加新項(xiàng)…”“添加新項(xiàng)”“類別”lC+下的代碼”模板頭文件.hMtFcl.h,并單擊添加添加一個名為“MyMathFuncs”的簡單類,以執(zhí)行常見的算術(shù)運(yùn)算,如加、減、乘和除。代碼應(yīng)與以下內(nè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ū)С鲈摲椒ㄒ怨┱堊⒁獯舜a方法聲明中序使用。有關(guān)更多信息,請參見dllimport項(xiàng)目添加新項(xiàng)添加新項(xiàng)類別l代碼”模板C++文件”thFunl.cp,并單擊“添加在源文件中實(shí)現(xiàn)“MyMathFuncs”的功能。代碼應(yīng)與以下內(nè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,請從“項(xiàng)目”菜單中選擇MathFuncsDll“屬性...”。在左窗格中,選擇“配置屬性”下的“規(guī)”。在右窗格中,將“配置類型”更改為“動態(tài)庫(.dll)”。單擊“確定”保存更改編譯該動態(tài)鏈接庫,方法是選擇“生成”菜單中的“生成解決方案”這樣就創(chuàng)建了一個可供其他程序使用有關(guān)DLL的詳細(xì)信息,請參見DLLDLL創(chuàng)建引用動態(tài)鏈接庫的應(yīng)若要創(chuàng)建將引用并使用剛創(chuàng)建的動態(tài)鏈接庫的應(yīng)用程序,請從“文件”菜單中選擇“新建”,然后選擇“項(xiàng)目...”在“項(xiàng)目類型”窗格中,選擇“VisualC++”下的“Win32”在“模板”窗格中,選擇控制臺應(yīng)用程序”為項(xiàng)目選擇一個名稱(如MyExecRefsDll),并將其鍵入“名稱”字段。從“解決方案”旁邊的下拉列表中選擇“添單擊“確定”啟動“Win32應(yīng)用程序向?qū)А?。在“Win32應(yīng)用程序向?qū)А睂υ捒虻摹案攀觥表撝?,單擊“下一步”在“Win32應(yīng)用程序向?qū)А钡摹皯?yīng)用程序設(shè)置”頁中,選擇“應(yīng)用程序類型”下的“控制臺應(yīng)用程序”在應(yīng)用程序向?qū)А钡摹皯?yīng)用程序設(shè)置”頁中,清除“附加選項(xiàng)”下的“預(yù)編譯頭”復(fù)選框按“完成”創(chuàng)建項(xiàng)目在控制臺應(yīng)用程序中使用類庫的說擇MyExecRefsDll項(xiàng)目,然后從“項(xiàng)目”菜單中選擇“引用...”。在“屬性頁”對話框中,展開“通用屬性”節(jié)點(diǎn),選性頁”對話框->“通用屬性”->“框架和引用”。顯示“添加引用”“項(xiàng)目”選項(xiàng)卡列出了當(dāng)前解決方案中的所有項(xiàng)目,以項(xiàng)目tFuD。然后單擊確定”。屬性頁配置屬性節(jié)點(diǎn),然后展開/C常規(guī)附加包含目錄MtFclh“tFclll”TH環(huán)境屬性頁配置屬性調(diào)試。在環(huán)境容:PATH=<MathFuncsDll.dll文件的路徑>,其中<MathFuncsDll.dll文件的路徑>應(yīng)替換的實(shí)際位置。單擊“確定”保存所現(xiàn)在,可以在應(yīng)用程序中使用“MyMathFuncs”類了。使用以下代碼替換“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)<<說如果要從命令行而VisualStudio運(yùn)行可執(zhí)行文件,則必須在命令提示符處手動更新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} 通過從“生成”菜單中選擇“生成解決方案”,生成可執(zhí)行文件運(yùn)行應(yīng)用程 確保選擇“MyExecRefsDll”作為默認(rèn)項(xiàng)目。在“解決方案資源管理器”菜單中的“設(shè)為啟動項(xiàng)目”MyExecRefsDll,然后選擇“項(xiàng)目 若要運(yùn)行項(xiàng)目,請選擇“調(diào)試”菜單中的“開始執(zhí)行(不調(diào)試)”。輸出應(yīng)該與下面的內(nèi)容類a+‐*/b====演練:創(chuàng)建和使用靜態(tài)庫我們將創(chuàng)建的下一個庫類型是靜態(tài) (LIB)。使用靜態(tài)庫是重用代碼的一種絕佳方式。您不必在自己創(chuàng)建的每個程序中新實(shí)現(xiàn)同一例程,而只需對這些例程編寫一次,然后從需要該功能的應(yīng)用程序引用它們即可本演練涵蓋以下內(nèi)創(chuàng)建引用靜態(tài)庫的應(yīng)用程序創(chuàng)建新的靜從“文件”菜單中,選擇“新建”,然后選擇“項(xiàng)目...”在“模板”窗格中,選擇“Win32控制臺應(yīng)用程序”。為項(xiàng)目選擇一個名稱(例如MathFuncsLib),并將該名稱輸入“名稱”字段。為解決方案選擇一個名稱(例如按“確定”啟動“Win32應(yīng)用程序向?qū)А薄T凇癢in32應(yīng)用程序向?qū)А睂υ捒虻摹案攀觥表撝?,按“下一步”在“Win32應(yīng)用程序向?qū)А钡摹皯?yīng)用程序設(shè)置”頁中,選擇“應(yīng)用程序類型”下的“靜態(tài)庫”在應(yīng)用程序向?qū)А钡摹皯?yīng)用程序設(shè)置”頁中,清除“附加選項(xiàng)”下的“預(yù)編譯頭”復(fù)選框按“完成”創(chuàng)建項(xiàng)目向靜態(tài)庫添加添加一個名為“MyMathFuncs”的簡單類,以執(zhí)行常見的算術(shù)運(yùn)算,如加、減、乘和除。代碼應(yīng)與以下內(nè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代碼”模板C++文件”例如MthFuns.cp),并按“添加在源文件中實(shí)現(xiàn)MyMathFuncs的功能。代碼應(yīng)與以下內(nè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)庫,請從“項(xiàng)目”菜單中選擇屬性...”。在左窗格中,選擇“配置屬性”下“常規(guī)”。在右窗格中,將“配置類型”更改為“靜態(tài)庫(.lib)”。按“確定”保存更改編譯該靜態(tài)庫,方法是選擇“生成”菜單中的“生成解決方案”。這將創(chuàng)建一個可供其他程序使用的靜態(tài)庫創(chuàng)建引用靜態(tài)庫的應(yīng)用若要創(chuàng)建引用并使用剛剛創(chuàng)建的靜態(tài)庫的應(yīng)用程序,請從“文件”菜單中選擇“新建”,然后選擇“項(xiàng)目...”在“項(xiàng)目類型”窗格中,選擇“VisualC++”下的“Win32”在“模板”窗格中,選擇控制臺應(yīng)用程序”說的Cl.l/c/EHMthFuns.cpp)。這將創(chuàng)建名為“tFcbob”/c(i.exbthuno)“thFuncsbb”。有關(guān)庫管LIB參考。為項(xiàng)目選擇一個名稱(如MyExecRefsb),并將其鍵入“名稱”字段。從“解決方案”旁邊的下拉列表中選擇“添按“確定為項(xiàng)目選擇一個名稱(如MyExecRefsb),并將其鍵入“名稱”字段。從“解決方案”旁邊的下拉列表中選擇“添按“確定”啟動“Win32應(yīng)用程序向?qū)А?。在“Win32應(yīng)用程序向?qū)А睂υ捒虻摹案攀觥表撝?,按“下一步”在“Win32應(yīng)用程序向?qū)А钡摹皯?yīng)用程序設(shè)置”頁中,選擇“應(yīng)用程序類型”下的“控制臺應(yīng)用程序”在應(yīng)用程序向?qū)А钡摹皯?yīng)用程序設(shè)置”頁中,清除“附加選項(xiàng)”下的“預(yù)編譯頭”按“完成”創(chuàng)建項(xiàng)目在控制臺應(yīng)用程序中使用靜態(tài)庫的項(xiàng)目菜單中的引用屬性頁對話框中,展開“通用屬性”節(jié)點(diǎn),并選擇“引用”。然后選擇“添加新引用...”按鈕。有關(guān)“引用...”對話框的更多信息,請參見Projecname>。顯示“添加引用”“項(xiàng)目”選項(xiàng)卡列出了當(dāng)前解決方案中的所有項(xiàng)目,以項(xiàng)目tFsb。然后選擇確定”。若要引用靜態(tài)庫的頭文件,必須修改包含目錄路徑。為此,請在“屬性頁”對話框中,展開“配置屬性”節(jié)點(diǎn),后展開“C/C++”節(jié)點(diǎn),并選擇“常規(guī)”。在“附加包含目錄”旁邊,鍵入MathFuncsLib.h頭文件所在位置的路現(xiàn)在即可在此應(yīng)用程序中使 類。使用以下代碼替換“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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論