




已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
.Visual Studio 2012 - Visual C+Visual C+強(qiáng)大而靈活的 Visual C+ 語言和工具在 Visual Studio 允許在 .NET framework 上運(yùn)行本機(jī) Windows 應(yīng)用商店 apps、本機(jī)桌面 apps 和托管 apps 的開發(fā)。 Visual C+ 包含以下元素: Visual Studio 開發(fā)環(huán)境 開發(fā)環(huán)境通過編寫代碼以支持整個(gè)開發(fā)工作流,從創(chuàng)建和管理的項(xiàng)目,調(diào)試,進(jìn)行分析并部署到最終用戶??梢暬ぞ?C+compiler 編譯器支持本機(jī)代碼以 .NET 公共語言運(yùn)行時(shí) (CLR) 的開發(fā)和開發(fā)。 Visual C+ 直接支持 x86 計(jì)算機(jī)的生成,并包括面向 x64 和 ARM 的編譯器。 它優(yōu)化所有平臺(tái)的性能。 庫 C 運(yùn)行庫 (crt) 包括安全增強(qiáng)選擇要了解所造成安全問題的函數(shù)。標(biāo)準(zhǔn) C+ 庫 包含 (mfc) 庫和標(biāo)準(zhǔn)模板庫 (STL)。活動(dòng)模板庫 (ATL) 傳遞給 COM 組件和 apps 的創(chuàng)建。Microsoft 基礎(chǔ)類 (MFC) 庫選件 對(duì)的桌面 apps 創(chuàng)建具有傳統(tǒng)或 Office 樣式的用戶界面。并行模式庫 (PPL) 對(duì) CPU 執(zhí)行的異步和并行算法。C+ AMP (C+ 加速的大量并行) 對(duì)于大量在 GPU 執(zhí)行的并行算法。Windows 運(yùn)行時(shí) C+ 模板庫 (WRL), 為 Windows 應(yīng)用商店 apps 和元素的 COM 樣式的開發(fā)。.NET framework 選件類庫 (通過使用 C+/CLI),STL/CLR 和 C+ 支持庫 對(duì)托管 apps 的開發(fā)。此外,在中,當(dāng)使用 Visual C+ 時(shí)也可以訪問 Windows 應(yīng)用商店 apps 和桌面 apps 的 windows API。 標(biāo)頭文件和 .winmd 文件這些 API 的包含在 Visual Studio 中,在 Windows 軟件開發(fā)包 (SDK)Windows 8的。 Visual Studio 2012 - Visual C+Win32桌面應(yīng)用程序(Visual C+)可以創(chuàng)建 Win32 app,如果要在從 Windows 95 的 windows 版本使用基于 windows 的用戶界面,并且可以運(yùn)行到 Windows 8的本機(jī)桌面應(yīng)用程序時(shí)。 可以使用 Visual Studio Express 2012 for Windows Desktop 或任何除 Visual Studio Express 2012 for Windows 8的 Visual Studio 版本。 Win32 應(yīng)用程序 是使用消息循環(huán)處理 windows 消息直接而不是使用一種機(jī)制 (如 Microsoft 基礎(chǔ)類 (MFC),活動(dòng)模板庫 (ATL) 或 .NET framework app 的約定術(shù)語。 雖然這個(gè)術(shù)語是“Win32”,它可以引用 32 位或 64 位應(yīng)用程序。 在 C+ 的 Win32 應(yīng)用程序可以使用 C 運(yùn)行時(shí) (crt) 和標(biāo)準(zhǔn)模板庫 (STL) 選件類和函數(shù),COM 對(duì)象和任何公共函數(shù),公共稱為 windows API。 有關(guān) Win32 apps 介紹在 C+ 中,請(qǐng)參見 了解到窗口的程序在 C+。 Win32 應(yīng)用程序是一種創(chuàng)建窗口的本機(jī)桌面應(yīng)用程序;另一種方法是 MFC 應(yīng)用程序。 MFC 是企業(yè)類型的阿普斯特殊的默認(rèn)值選擇阿普斯具有許多用戶界面控件或自定義用戶控件。 MFC 用于序列化、文本處理、打印和當(dāng)今用戶界面元素提供方便的幫助器類選件例如功能區(qū)上。 這些選件類對(duì) Win32 應(yīng)用程序不可用。 若要?jiǎng)?chuàng)建 MFC 或 ATL 程序需要 Microsoft Visual Studio Professional 2012 或更高版本。 Visual Studio Express 2012 for Windows Desktop 不包括 MFC 或 ATL 支持。 創(chuàng)建標(biāo)準(zhǔn)C+程序在 Visual Studio 集成開發(fā)環(huán)境 (IDE) 可以使用 Visual C+ 創(chuàng)建標(biāo)準(zhǔn) C+ 程序。 通過采用此演練中的步驟,您可以創(chuàng)建一個(gè)項(xiàng)目,向該項(xiàng)目添加一個(gè)新文件,修改該文件以添加 C+ 代碼,然后使用 Visual Studio 編譯并運(yùn)行程序。 您可以鍵入自己的 C+ 程序,或者使用示例程序之一。 此演練中的示例程序是一個(gè)控制臺(tái)應(yīng)用程序。 此應(yīng)用程序使用標(biāo)準(zhǔn)模板庫 (STL) 中的 set 容器。 Visual C+ 使用 2003 C+ 標(biāo)準(zhǔn)進(jìn)行編譯,但有以下幾點(diǎn)主要例外之處:兩階段名稱查找、異常規(guī)范和導(dǎo)出。 此外,Visual C+ 支持若干 C+0x 功能,例如,lambda、自動(dòng)、static_assert、rvalue 引用和 extern 模板。 說明如果要求符合標(biāo)準(zhǔn),請(qǐng)使用 /Za 編譯器選項(xiàng)來禁用對(duì)該標(biāo)準(zhǔn)的 Microsoft 擴(kuò)展。 有關(guān)更多信息,請(qǐng)參見/Za、/Ze(禁用語言擴(kuò)展)。 系統(tǒng)必備 若要完成本演練,您必須了解 C+ 語言的基礎(chǔ)知識(shí)。創(chuàng)建項(xiàng)目并添加源文件1. 通過以下方式創(chuàng)建一個(gè)項(xiàng)目:指向“文件”菜單上的“新建”,然后單擊“項(xiàng)目”。2. 在“Visual C+”項(xiàng)目類型窗格中,單擊“Win32”,然后單擊“Win32 控制臺(tái)應(yīng)用程序”。3. 鍵入項(xiàng)目名稱。默認(rèn)情況下,包含項(xiàng)目的解決方案與項(xiàng)目同名,但您可以鍵入其他名稱。 您也可以為項(xiàng)目鍵入其他位置。 單擊“確定”創(chuàng)建項(xiàng)目。4. 在“Win32 應(yīng)用程序向?qū)А敝?,單擊“下一步”,選擇“空項(xiàng)目”,然后單擊“完成”。5. 如果未顯示“解決方案資源管理器”,請(qǐng)?jiān)凇耙晥D”菜單上,單擊“解決方案資源管理器”。6. 將一個(gè)新源文件添加到項(xiàng)目,如下所示。a. 在“解決方案資源管理器”中,右擊“源文件”文件夾,指向“添加”,然后單擊“新建項(xiàng)”。b. 在“代碼”節(jié)點(diǎn)中單擊“C+ 文件(.cpp)”,為文件鍵入名稱,然后單擊“添加”。該 .cpp 文件即顯示在“解決方案資源管理器”中的“源文件”文件夾中,并且文件將在 Visual Studio 編輯器中打開。7. 在編輯器內(nèi)的文件中,鍵入使用標(biāo)準(zhǔn) C+ 庫的有效 C+ 程序,或者復(fù)制示例程序之一并將其粘貼在文件中。例如,您可以使用 set:find (STL Samples)示例程序,該程序是幫助中附帶的標(biāo)準(zhǔn)模板庫示例之一。如果使用該示例程序,請(qǐng)注意 using namespace std; 指令。 此指令使程序能夠使用 cout 和 endl,而無需完全限定名(std:cout 和 std:endl)。 8. 保存該文件。9. 在“生成”菜單上,單擊“生成解決方案”。“輸出”窗口顯示有關(guān)編譯過程的信息,例如,生成日志的位置,以及指示生成狀態(tài)的消息。10. 在“調(diào)試”菜單上,單擊“開始執(zhí)行(不調(diào)試)”。如果使用了示例程序,將顯示一個(gè)命令窗口,其中顯示是否在集合中找到了特定的整數(shù)。在命令行上編譯本機(jī)C+程序Visual C+ 包括一個(gè) C+ 編譯器,可用來創(chuàng)建從基本 Visual C+ 程序到 Windows 窗體應(yīng)用程序和組件的各種程序。通過按此演練的過程進(jìn)行操作,您可以通過使用文本編輯器創(chuàng)建基本的 Visual C+ 程序,然后在命令行上對(duì)其進(jìn)行編譯。也可以編譯使用 Visual Studio 集成開發(fā)環(huán)境 (IDE) 創(chuàng)建的 Visual C+ 程序。 有關(guān)更多信息,請(qǐng)參見Walkthrough: Compiling a C+ Program that Targets the CLR in Visual Studio。 您可以使用自己的 Visual C+ 程序,而不是鍵入下面步驟中所示的程序。 也可以使用其他幫助主題中的任何 Visual C+ 代碼示例程序。 系統(tǒng)必備 若要完成本演練,您必須了解 C+ 語言的基礎(chǔ)知識(shí)。創(chuàng)建 Visual C+ 源文件并在命令行上對(duì)其進(jìn)行編譯1. 打開“Visual Studio 2010 命令提示”窗口,方法是單擊“開始”,指向“所有程序”、“Microsoft Visual Studio 2010”、“Visual Studio 工具”,然后單擊“Visual Studio 2010 命令提示”??赡苄枰芾韱T憑據(jù)才能成功編譯此演練中的代碼,具體情況視計(jì)算機(jī)的操作系統(tǒng)和配置而定。 若要以管理員身份運(yùn)行“Visual Studio 2010 命令提示”窗口,請(qǐng)右擊“Visual Studio 2010 命令提示”,然后單擊“以管理員身份運(yùn)行”。 2. 在命令提示符下,鍵入 notepad basic.cpp,并按 Enter。在系統(tǒng)提示是否創(chuàng)建文件時(shí),單擊“是”。3. 在記事本中,鍵入下列各行。復(fù)制代碼 #include int main() std:cout This is a native C+ program. std:endl; return 0;4. 在“文件”菜單上,單擊“保存”。這樣就創(chuàng)建了一個(gè) Visual C+ 源文件。5. 關(guān)閉記事本。6. 在命令提示符下,鍵入 cl /EHsc basic.cpp,并按 Enter。 /EHsc 命令行選項(xiàng)指示編譯器啟用 C+ 異常處理。 有關(guān)更多信息,請(qǐng)參見/EH(異常處理模型)。 cl.exe 編譯器將生成一個(gè)名為 basic.exe 的可執(zhí)行程序。您可以在編譯器顯示的多行輸出信息中看到可執(zhí)行程序的名稱。7. 若要查看目錄中具有名稱 basic 以及任何文件擴(kuò)展名的文件的列表,請(qǐng)鍵入 dir basic.* 并按 Enter。.obj 文件是一個(gè)中間格式文件,可以安全地忽略它。8. 若要運(yùn)行 basic.exe 程序,請(qǐng)鍵入 basic 并按 Enter。該程序顯示以下文本并退出:This is a native C+ program.9. 若要關(guān)閉“Visual Studio 2010 命令提示”窗口,請(qǐng)鍵入 exit 并按 Enter。編譯使用 .NET 類的 Visual C+ 程序 下面的步驟演示如何編譯使用 .NET Framework 類的 Visual C+ 程序。您必須使用 /clr(公共語言運(yùn)行時(shí)編譯)編譯器選項(xiàng),因?yàn)榇顺绦蚴褂?.NET 類并且必須包括必要的 .NET 庫。 Visual C+ 編譯器生成的 .exe 文件包含 MSIL 代碼,而不是可由計(jì)算機(jī)執(zhí)行的指令。 按照本過程中的步驟編譯幫助主題中的任何 Visual C+ 示例程序。在命令行上編譯 Visual C+ .NET 控制臺(tái)應(yīng)用程序1. 打開“Visual Studio 2010 命令提示”窗口,方法是單擊“開始”,指向“所有程序”、“Microsoft Visual Studio 2010”、“Visual Studio 工具”,然后單擊“Visual Studio 2010 命令提示”??赡苄枰芾韱T憑據(jù)才能成功編譯此演練中的代碼,具體情況視計(jì)算機(jī)的操作系統(tǒng)和配置而定。 若要以管理員身份運(yùn)行“Visual Studio 2010 命令提示”窗口,請(qǐng)右擊“Visual Studio 2010 命令提示”,然后單擊“以管理員身份運(yùn)行”。 2. 在命令提示符下,鍵入 notepad basicclr.cpp,并按 Enter。在系統(tǒng)提示是否創(chuàng)建文件時(shí),單擊“是”。3. 在記事本中,鍵入下列各行。復(fù)制代碼 int main() System:Console:WriteLine(This is a Visual C+ program.);4. 在“文件”菜單上,單擊“保存”。您已經(jīng)創(chuàng)建了一個(gè)使用 .NET 類 (Console) 的 Visual C+ 源文件,該文件位于 System 命名空間。5. 關(guān)閉記事本。6. 在命令提示符下,鍵入 cl /clr basicclr.cpp,并按 Enter。 cl.exe 編譯器將生成一個(gè)名為 basicclr.exe 的可執(zhí)行程序。 7. 若要查看目錄中具有名稱 basicclr 以及任何文件擴(kuò)展名的文件的列表,請(qǐng)鍵入 dir basicclr.* 并按 Enter。.obj 文件是一個(gè)中間格式文件,可以安全地忽略它。.manifest 文件是包含有關(guān)程序集的信息的 XML 文件。 (程序集是 .NET 部署單元,例如 .exe 程序或 .dll 組件或庫。) 8. 若要運(yùn)行 basicclr.exe 程序,請(qǐng)鍵入 basicclr 并按 Enter。該程序顯示以下文本并退出:This is a Visual C+ program.9. 若要關(guān)閉“Visual Studio 2010 命令提示”窗口,請(qǐng)鍵入 exit 并按 Enter。在Visual Studio中編譯面向CLR的C+程序通過使用 Visual Studio 開發(fā)環(huán)境,您可以創(chuàng)建使用 .NET 類的 Visual C+ 程序,并對(duì)它們進(jìn)行編譯。在本過程中,您可以鍵入自己的 Visual C+ 程序,也可以使用示例程序之一。 本過程中使用的示例程序創(chuàng)建一個(gè)名為 textfile.txt 的文本文件,并將其保存到項(xiàng)目目錄中。 系統(tǒng)必備 這些主題假定您具備 C+ 語言的基礎(chǔ)知識(shí)。在 Visual Studio 中創(chuàng)建新項(xiàng)目并添加新的源文件1. 創(chuàng)建新項(xiàng)目。 在“文件”菜單上,指向“新建”,然后單擊“項(xiàng)目”。 2. 在“Visual C+ 項(xiàng)目類型”中單擊“CLR”,然后單擊“CLR 空項(xiàng)目”。3. 鍵入項(xiàng)目名稱。默認(rèn)情況下,包含項(xiàng)目的解決方案與新項(xiàng)目同名,當(dāng)然,您也可以鍵入其他名稱。 如果愿意,您可以為項(xiàng)目輸入一個(gè)不同的位置。 單擊“確定”創(chuàng)建新項(xiàng)目。4. 如果“解決方案資源管理器”不可見,請(qǐng)單擊“視圖”菜單上的“解決方案資源管理器”。5. 向該項(xiàng)目添加新的源文件: 在解決方案資源管理器中右擊“源文件”文件夾,指向“添加”并單擊“新建項(xiàng).”。 單擊“C+ 文件(.cpp)”,鍵入一個(gè)文件名,然后單擊“添加”。該 .cpp 文件即顯示在“解決方案資源管理器”中的“源文件”文件夾中,并且,在鍵入要包含在該文件中的代碼的位置,出現(xiàn)一個(gè)選項(xiàng)卡式窗口。6. 在 Visual Studio 中,在新創(chuàng)建的選項(xiàng)卡中單擊并鍵入有效的 Visual C+ 程序,或者復(fù)制并粘貼示例程序之一。例如,您可以使用 如何:編寫文本文件 (C+/CLI) 示例程序(位于“編程指南”中的“文件處理和 I/O”節(jié)點(diǎn))。如果要使用示例程序,通知您使用 gcnew關(guān)鍵字而不是 new,在創(chuàng)建 .NET 對(duì)象,并且,時(shí) gcnew 返回句柄 () 而不是指針 (*):StreamWriter sw = gcnew StreamWriter(fileName);有關(guān)新 Visual C+ 語法的更多信息,請(qǐng)參見 適用于運(yùn)行時(shí)平臺(tái)的組件擴(kuò)展。7. 在“生成”菜單上,單擊“生成解決方案”?!拜敵觥贝翱陲@示有關(guān)編譯過程的信息,如生成日志的位置,以及指示生成狀態(tài)的消息。如果進(jìn)行了更改,并在未執(zhí)行生成的情況下運(yùn)行該程序,則對(duì)話框可能指示該項(xiàng)目已過期。 如果要讓 Visual Studio 始終使用文件的當(dāng)前版本,并且在每次生成應(yīng)用程序時(shí)不發(fā)出提示,請(qǐng)?jiān)趩螕簟按_定”之前選中此對(duì)話框上的復(fù)選框。 8. 在“調(diào)試”菜單上,單擊“開始執(zhí)行(不調(diào)試)”。9. 如果您使用的是示例程序,則在運(yùn)行程序時(shí)將顯示一個(gè)命令窗口,指示已創(chuàng)建了該文本文件。 按任意鍵,關(guān)閉該命令窗口。 textfile.txt 文本文件現(xiàn)在位于您的項(xiàng)目目錄中。 您可以使用記事本打開此文件。 說明選擇空 CLR 項(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ùn)行時(shí)支持”選項(xiàng)。 編譯C程序Visual Studio 包括可用來創(chuàng)建從基本基本的 C 程序到 windows API 應(yīng)用程序的 c. 編譯器。此演練演示如何使用文本編輯器創(chuàng)建一個(gè)基本的 C 程序,然后在命令行上對(duì)其進(jìn)行編譯。您可以使用自己的 C 程序,而不是鍵入此演練中所示的示例程序。 也可以使用幫助主題中包含的任何 C 代碼示例程序。 默認(rèn)情況下,Visual C+ 編譯器將以 .c 結(jié)尾的所有文件視為 C 源代碼,將以 .cpp 結(jié)尾的所有文件視為 C+ 源代碼。 若要強(qiáng)制編譯器將所有文件視為 C(而不管文件擴(kuò)展名如何),請(qǐng)使用 /Tc 編譯器選項(xiàng)。 系統(tǒng)必備 您必須了解 C 語言的基礎(chǔ)知識(shí)。創(chuàng)建 C 源文件并在命令行上對(duì)其進(jìn)行編譯1. 打開開發(fā)人員命令提示。 在 啟動(dòng) 屏幕的 windows 8,在中,選擇 VS2012 開發(fā)人員命令提示 平鋪。 在早期版本中,選擇 啟動(dòng) 按鈕,展開 所有程序、Microsoft Visual Studio 2012和 Visual Studio 工具,然后選擇 VS2012 開發(fā)人員命令提示。 基于 windows 的版本在計(jì)算機(jī)和系統(tǒng)安全配置中,您可能必須打開 VS2012 開發(fā)人員命令提示 的快捷菜單中選擇 以管理員身份運(yùn)行 成功生成和運(yùn)行按這些步驟創(chuàng)建的應(yīng)用程序。說明VS2012 開發(fā)人員命令提示 自動(dòng)設(shè)置 C 編譯器和所需的任何庫的正確路徑。 應(yīng)使用它而不是使用普通的“命令提示符”窗口。 有關(guān)更多信息,請(qǐng)參見為命令行生成設(shè)置路徑和環(huán)境變量。 2. 在命令提示,請(qǐng)創(chuàng)建源文件的目錄并使其成為當(dāng)前工作目錄。 例如,鍵入 md c:simple 并按 enter 創(chuàng)建名為 Simple 的目錄,然后鍵入 cd c:simple 并按 enter 更改到該目錄。 3. 在命令提示符處,鍵入 notepad 并按 enter。4. 在記事本中,輸入以下行。Visual C+ 復(fù)制代碼 #include int main() printf(This is a native C program.n); return 0; 5. 在菜單欄上,依次選擇 文件,保存 打開 另存為 對(duì)話框。 導(dǎo)航到已創(chuàng)建的內(nèi)容。 在 文件名 框中,輸入一個(gè)名稱為源文件 (例如,simple.c 和中的 保存類型 然后在下拉列表中,選擇 所有文件 (*.*)。 選擇 保存 按鈕創(chuàng)建 c. 源文件在您的工作目錄。 6. 關(guān)閉記事本。7. 在命令提示,請(qǐng)與您的源一起的名稱指定 cl 命令文件 (例如,cl simple.c并按 enter 生成程序。 cl.exe 編譯器將生成將源文件的名稱的可執(zhí)行程序,但是,有一個(gè) .exe 文件名擴(kuò)展名 (例如,Simple.exe。 您可以在編譯器顯示的多行輸出信息中看到可執(zhí)行程序的名稱。Outputx86 copyright (c) Microsoft Corporation 的 Microsoft (r) C/C+ 編譯器優(yōu)化第 17.00.50727.1 版。 保留所有權(quán)利。 simple.c Microsoft (r) 增量鏈接器第 11.00.50727.1 版 copyright (c) Microsoft Corporation。 保留所有權(quán)利。 /out:simple.exe simple.obj 8. 若要查看文件列表中工作目錄中,鍵入 dir 并按 enter。.obj 文件是可忽略的中間格式文件。9. 若要運(yùn)行程序,鍵入其名稱,不帶文件擴(kuò)展名 (例如,simple并按 enter。程序顯示此文本然后退出:This is a native C program.10. 若要關(guān)閉命令提示符窗口,鍵入 exit 并按 enter。創(chuàng)建Win32應(yīng)用程序本演練演示如何創(chuàng)建基于 Win32 的簡單基本應(yīng)用程序,該應(yīng)用程序在窗口中顯示“Hello, World!”。 您可以使用在此演練中開發(fā)的代碼作為創(chuàng)建其他基于 Win32 的應(yīng)用程序的模式。 Win32 API(也稱為 Windows API)是用于創(chuàng)建 Windows 應(yīng)用程序的基于 C 的框架。 有關(guān) Win32 API 的更多信息,請(qǐng)參見 Windows API。 重要事項(xiàng)為了可以更加清楚地說明本文檔內(nèi)各步驟中的特定代碼段,我們可能會(huì)省略一個(gè)有效應(yīng)用程序所必需的某些代碼語句,例如 include 指令和全局變量聲明。 本文檔末尾的示例一節(jié)顯示了完整代碼。 系統(tǒng)必備 若要完成本演練,您必須了解 C+ 語言的基礎(chǔ)知識(shí)。有關(guān)視頻演示,請(qǐng)參見 Visual Studio 2008 文檔中的 Video How to: Creating Win32 Applications (C+)(視頻幫助:創(chuàng)建 Win32 應(yīng)用程序 (C+))。創(chuàng)建基于 Win32 的項(xiàng)目1. 在“文件”菜單上,單擊“新建”,然后單擊“項(xiàng)目”。2. 在“新建項(xiàng)目”對(duì)話框的左側(cè)窗格中,單擊“已安裝的模板”,單擊“Visual C+”,然后選擇“Win32”。 在中間窗格中,選擇“Win32 項(xiàng)目”。 在“名稱”框中,鍵入項(xiàng)目名稱,例如 win32app。 單擊“確定”。 3. 在“Win32 應(yīng)用程序向?qū)А钡摹皻g迎”頁上,單擊“下一步”。4. 在“應(yīng)用程序設(shè)置”頁上的在“應(yīng)用程序類型”下,選擇“Windows 應(yīng)用程序”。 在“附加選項(xiàng)”下,選擇“空項(xiàng)目”。 單擊“完成”創(chuàng)建項(xiàng)目。 5. 在“解決方案資源管理器”中,右擊 Win32app 項(xiàng)目,單擊“添加”,然后單擊“新建項(xiàng)”。 在“添加新項(xiàng)”對(duì)話框中選擇“C+ 文件(.cpp)”。 在“名稱”框中,鍵入文件名稱,例如 GT_HelloWorldWin32.cpp。 單擊“添加”。 啟動(dòng)基于 Win32 的應(yīng)用程序1. 就像每個(gè) C 應(yīng)用程序和 C+ 應(yīng)用程序都以 main 函數(shù)作為起點(diǎn)那樣,每個(gè)基于 Win32 的應(yīng)用程序同樣必須要有 WinMain 函數(shù)。 WinMain 具有以下語法。 復(fù)制代碼 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow);有關(guān)此函數(shù)的參數(shù)和返回值的信息,請(qǐng)參見 WinMain 函數(shù)。2. 由于應(yīng)用程序代碼必須使用現(xiàn)有定義,因此應(yīng)將 include 語句添加到文件中。復(fù)制代碼 #include #include #include #include 3. 除 WinMain 函數(shù)外,每個(gè)基于 Win32 的應(yīng)用程序還必須具有一個(gè)窗口過程函數(shù)。 此函數(shù)通常名為 WndProc。 WndProc 具有以下語法。 復(fù)制代碼 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);此函數(shù)處理應(yīng)用程序從操作系統(tǒng)接收的許多消息。 例如,在具有對(duì)話框(該對(duì)話框中有一個(gè)“確定”按鈕)的應(yīng)用程序中,如果用戶單擊該按鈕,操作系統(tǒng)就會(huì)向該應(yīng)用程序發(fā)送一條消息,告知已單擊該按鈕。 WndProc 負(fù)責(zé)響應(yīng)該事件。 在此示例中,相應(yīng)的響應(yīng)可能是關(guān)閉該對(duì)話框。 有關(guān)更多信息,請(qǐng)參見窗口過程。向 WinMain 函數(shù)添加功能1. 在 WinMain 函數(shù)中,創(chuàng)建 WNDCLASSEX 類型的窗口類結(jié)構(gòu)。 此結(jié)構(gòu)包含有關(guān)該窗口的信息,例如,應(yīng)用程序圖標(biāo)、窗口的背景色、要在標(biāo)題欄中顯示的名稱、窗口過程函數(shù)的名稱等等。 下面的示例演示一個(gè)典型 WNDCLASSEX 結(jié)構(gòu)。 復(fù)制代碼 WNDCLASSEX wcex; wcex.cbSize = sizeof(WNDCLASSEX); wcex.style = CS_HREDRAW | CS_VREDRAW; wcex.lpfnWndProc = WndProc; wcex.cbClsExtra = 0; wcex.cbWndExtra = 0; wcex.hInstance = hInstance; wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APPLICATION); wcex.hCursor = LoadCursor(NULL, IDC_ARROW); wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); wcex.lpszMenuName = NULL; wcex.lpszClassName = szWindowClass; wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_APPLICATION);有關(guān)此結(jié)構(gòu)的各字段的信息,請(qǐng)參見 WNDCLASSEX。2. 現(xiàn)在您已經(jīng)創(chuàng)建一個(gè)窗口類,接下來必須將其注冊(cè)。 使用 RegisterClassEx 函數(shù),并將窗口類結(jié)構(gòu)作為參數(shù)進(jìn)行傳遞。 復(fù)制代碼 if (!RegisterClassEx(&wcex) MessageBox(NULL, _T(Call to RegisterClassEx failed!), _T(Win32 Guided Tour), NULL); return 1; 3. 現(xiàn)在可以創(chuàng)建一個(gè)窗口。 使用 CreateWindow 函數(shù)。 復(fù)制代碼 static TCHAR szWindowClass = _T(win32app);static TCHAR szTitle = _T(Win32 Guided Tour Application);/ The parameters to CreateWindow explained:/ szWindowClass: the name of the application/ szTitle: the text that appears in the title bar/ WS_OVERLAPPEDWINDOW: the type of window to create/ CW_USEDEFAULT, CW_USEDEFAULT: initial position (x, y)/ 500, 100: initial size (width, length)/ NULL: the parent of this window/ NULL: this application does not have a menu bar/ hInstance: the first parameter from WinMain/ NULL: not used in this applicationHWND hWnd = CreateWindow( szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 500, 100, NULL, NULL, hInstance, NULL);if (!hWnd) MessageBox(NULL, _T(Call to CreateWindow failed!), _T(Win32 Guided Tour), NULL); return 1;此函數(shù)返回 HWND,它是某個(gè)窗口的句柄。 有關(guān)更多信息,請(qǐng)參見 Windows 數(shù)據(jù)類型。 4. 現(xiàn)在,使用下列代碼來顯示窗口。復(fù)制代碼 / The parameters to ShowWindow explained:/ hWnd: the value returned from CreateWindow/ nCmdShow: the fourth parameter from WinMainShowWindow(hWnd, nCmdShow);UpdateWindow(hWnd);此時(shí),所顯示的窗口不會(huì)有太多內(nèi)容,因?yàn)槟形磳?shí)現(xiàn) WndProc 函數(shù)。5. 現(xiàn)在添加一個(gè)消息循環(huán)以偵聽操作系統(tǒng)發(fā)送的消息。 如果應(yīng)用程序收到一條消息,則此循環(huán)會(huì)將該消息調(diào)度至 WndProc 函數(shù)以接受處理。 消息循環(huán)類似于下列代碼。 復(fù)制代碼 MSG msg; while (GetMessage(&msg, NULL, 0, 0) TranslateMessage(&msg); DispatchMessage(&msg); return (int) msg.wParam;有關(guān)消息循環(huán)中各結(jié)構(gòu)和函數(shù)的更多信息,請(qǐng)參見 MSG、GetMessage、TranslateMessage 和 DispatchMessage。此時(shí),WinMain 函數(shù)應(yīng)與下列代碼類似。復(fù)制代碼 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) WNDCLASSEX wcex; wcex.cbSize = sizeof(WNDCLASSEX); wcex.style = CS_HREDRAW | CS_VREDRAW; wcex.lpfnWndProc = WndProc; wcex.cbClsExtra = 0; wcex.cbWndExtra = 0; wcex.hInstance = hInstance; wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APPLICATION); wcex.hCursor = LoadCursor(NULL, IDC_ARROW); wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); wcex.lpszMenuName = NULL; wcex.lpszClassName = szWindowClass; wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_APPLICATION); if (!RegisterClassEx(&wcex) MessageBox(NULL, _T(Call to RegisterClassEx failed!), _T(Win32 Guided Tour), NULL); return 1; hInst = hInstance; / Store instance handle in our global variable / The parameters to CreateWindow explained: / szWindowClass: the name of the application / szTitle: the text that appears in the title bar / WS_OVERLAPPEDWINDOW: the type of window to create / CW_USEDEFAULT, CW_USEDEFAULT: initial position (x, y) / 500, 100: initial size (width, length) / NULL: the parent of this window / NULL: this application dows not have a menu bar / hInstance: the first parameter from WinMain / NULL: not used in this application HWND hWnd = CreateWindow( szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 500, 100, NULL, NULL, hInstance, NULL ); if (!hWnd) MessageBox(NULL, _T(Call to CreateWindow failed!), _T(Win32 Guided Tour), NULL); return 1; / The parameters to ShowWindow explained: / hWnd: the value returned from CreateWindow / nCmdShow: the fourth parameter from WinMain ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); / Main message loop: MSG msg; while (GetMessage(&msg, NULL, 0, 0) TranslateMessage(&msg); DispatchMessage(&msg); return (int) msg.wParam;向 WndProc 函數(shù)添加功能1. 若要啟用 WndProc 函數(shù)來處理應(yīng)用程序所收到的消息,請(qǐng)實(shí)現(xiàn) switch 語句。要處理的第一條消息是 WM_PAINT 消息。 如果必須更新所顯示的應(yīng)用程序窗口的一部分,該應(yīng)用程序就會(huì)收到此消息。 (首次顯示該窗口時(shí),必須將其全部更新。) 若要處理 WM_PAINT 消息,請(qǐng)首先調(diào)用 BeginPaint,然后處理用于布局該窗口中的文本、按鈕和其他控件的所有邏輯,再調(diào)用 EndPaint。 對(duì)于此應(yīng)用程序,開始調(diào)用和結(jié)束調(diào)用之間的邏輯會(huì)在窗口中顯示字符串“Hello, World!”。 在下列代碼中,請(qǐng)注意 TextOut 函數(shù)用于顯示該字符串。 復(fù)制代碼 PAINTSTRUCT ps;HDC hdc;TCHAR greeting = _T(Hello, World!);switch (message)case WM_PAINT: hdc = BeginPaint(hWnd, &ps); / Here your application is laid out. / For this introduction, we just print out Hello, World! / in the top left corner. TextOut(hdc, 5, 5, greeting, _tcslen(greeting); / End application-specific layout section. EndPaint(hWnd, &ps); break;2. 應(yīng)用程序通常會(huì)處理許多其他消息,例如 WM_CREATE 和 WM_DESTROY。 下列代碼展示了一個(gè)基本但完整的 WndProc 函數(shù)。 復(fù)制代碼 LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) PAINTSTRUCT ps; HDC hdc; TCHAR greeting = _T(Hello, World!); switch (message) case WM_PAINT: hdc = BeginPaint(hWnd, &ps); / Here your application is laid out. / For this introduction, we just print out Hello, World! / in the top left corner. TextOut(hdc, 5, 5, greeting, _tcslen(greeting); / End application specific layout section. EndPaint(hWnd, &ps); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); break; return 0;示例 生成此示例1. 創(chuàng)建本演練中之前“創(chuàng)建基于 Win32 的項(xiàng)目”中的基于 Win32 的項(xiàng)目。2. 復(fù)制這些步驟之后的代碼,然后將其粘貼到 GT_HelloWorldWin32.cpp 源文件中。3. 在“生成”菜單上,單擊“生成解決方案”。4. 若要運(yùn)行該應(yīng)用程序,請(qǐng)按 F5。 包含文本“hello world”!的窗口應(yīng)顯示在顯示的左上角。 代碼復(fù)制代碼 / GT_HelloWorldWin32.cpp/ compile with: /D_UNICODE /DUNICODE /DWIN32 /D_WINDOWS /c#include #include #include #include / Global variables/ The main window class name.static TCHAR szWindowClass = _T(win32app);/ The string that appears in the applications title bar.static TCHAR szTitle = _T(Win32 Guided Tour Application);HINSTANCE hInst;/ Forward declarations of functions included in this code module:LRESUL
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 環(huán)境災(zāi)害應(yīng)急物資儲(chǔ)備庫建設(shè)國家標(biāo)準(zhǔn)重點(diǎn)基礎(chǔ)知識(shí)點(diǎn)歸納
- 樂趣與色彩春節(jié)淡藍(lán)故事
- 土木工程項(xiàng)目中的BIM技術(shù)標(biāo)準(zhǔn)化應(yīng)用
- 公司股權(quán)激勵(lì)項(xiàng)目方案
- 春節(jié)里的淡藍(lán)夢(mèng)幻
- 外墻防水分格縫設(shè)置
- 保險(xiǎn)公司新春年貨活動(dòng)方案
- 保險(xiǎn)公司美食匯活動(dòng)方案
- 保險(xiǎn)公司高客活動(dòng)方案
- 保險(xiǎn)沙龍活動(dòng)方案
- 2022版義務(wù)教育語文課程標(biāo)準(zhǔn)(2022版含新增和修訂部分)
- 魚類學(xué)-鯔形目ppt課件教學(xué)教程
- 幼兒園課件:《鉛筆不能咬》
- 沒有斑馬線的馬路課件
- 高三物理一輪復(fù)習(xí)教學(xué)案追擊和相遇問題
- 門窗工程掛靠合同書
- 如何做好一名優(yōu)秀的企業(yè)管理者
- 完整word版醫(yī)院信息管理系統(tǒng)測(cè)試報(bào)告
- 新版醫(yī)療器械隨貨同行單模版(共1頁)
- 寧波奉化區(qū)國有企業(yè)融資及對(duì)外擔(dān)保治理暫行辦法
- 導(dǎo)桿式柴油打樁錘使用說明書15p
評(píng)論
0/150
提交評(píng)論