全新MicrosoftVisualStudio2013指南設(shè)計_第1頁
全新MicrosoftVisualStudio2013指南設(shè)計_第2頁
全新MicrosoftVisualStudio2013指南設(shè)計_第3頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、Visual Studio 2013 dektopVisual C+可以在微軟官方站點直接下載最新的express版本,注冊并且免費(fèi)使用強(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)境通過編寫代碼以支持整個開發(fā)工作流,從創(chuàng)建和管理的項目,調(diào)試,進(jìn)行分析并部署到最終用戶??梢暬ぞ逤+compiler編譯器支持本機(jī)代碼以.NET公共語言運(yùn)行時(CLR)的開發(fā)和開發(fā)。Visua

2、l C+直接支持x86計算機(jī)的生成,并包括面向 x64和ARM的編譯器。它優(yōu) 化所有平臺的性能。庫C運(yùn)行庫(crt)包括安全增強(qiáng)選擇要了解所造成安全問題的函數(shù)。標(biāo)準(zhǔn)C+庫包含(mfc) 庫和標(biāo)準(zhǔn)模板庫(STL)。活動模板庫(ATL)傳遞給COM組件和apps的創(chuàng)建。Microsoft 基礎(chǔ)類(MFC)庫選件對的桌面apps創(chuàng)建具有傳統(tǒng)或Office 樣式的用戶界面。并行模式庫(PPL)對CPU執(zhí)行的異步和并行算法。C+ AMP (C+加速的大量并行)對于大量在GPU執(zhí)行的并行算法。Windows運(yùn)行時C+模板庫(WRL),為Windows應(yīng)用商店apps和元素的COM樣式的開發(fā)。 NET fr

3、amework 選件類庫(通過使用 C+/CLI),STL/CLR和C+支持庫 對托管apps的開發(fā)。此外,在中,當(dāng)使用 Visual C+時也可以訪問 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的 用戶界面,并且

4、可以運(yùn)行到Windows 8的本機(jī)桌面應(yīng)用程序時??梢允褂肰isualStudio Express 2012 for Windows Desktop 或任何除 Visual Studio Express 2012 for Windows 8 的 Visual Studio 版本。Win32應(yīng)用程序是使用消息循環(huán)處理 windows消息直接而不是使用一種機(jī)制(如 Microsoft 基礎(chǔ)類(MFC),活動模板庫(ATL) 或.NET framework app的約定術(shù)語。 雖 然這個術(shù)語是“ Win32,它可以引用32位或64位應(yīng)用程序。在C+的Win32應(yīng) 用程序可以使用C運(yùn)行時(crt) 和

5、標(biāo)準(zhǔn)模板庫(STL)選件類和函數(shù),COM對象和任 何公共函數(shù),公共稱為 windows API。有關(guān) Win32 apps 介紹在C+中,請參見 了 解到窗口的程序在 C+。Win 32應(yīng)用程序是一種創(chuàng)建窗口的本機(jī)桌面應(yīng)用程序;另一種方法是 MFC應(yīng)用程序。MFC是企業(yè)類型的阿普斯特殊的默認(rèn)值選擇阿普斯具有許多用戶界面控件或自定義用 戶控件。MFC用于序列化、文本處理、打印和當(dāng)今用戶界面元素提供方便的幫助器類 選件例如功能區(qū)上。這些選件類對Win32應(yīng)用程序不可用。若要創(chuàng)建MFC或ATL程 序需要 Microsoft Visual Studio Professional 2012或更高版本。

6、Visual StudioExpress 2012 for Windows Desktop 不包括 MFC 或 ATL 支持。創(chuàng)建標(biāo)準(zhǔn)C+g序在Visual Studio集成開發(fā)環(huán)境(IDE) 可以使用Visual C+ 創(chuàng)建標(biāo)準(zhǔn)C+程序。通過采用此演練中的步驟,您可以創(chuàng)建一個項目,向該項目添加一個新文件,修改該文 件以添加C+代碼,然后使用 Visual Studio編譯并運(yùn)行程序。您可以鍵入自己的 C+程序,或者使用示例程序之一。此演練中的示例程序是一個控制臺應(yīng)用程序。此應(yīng)用程序使用標(biāo)準(zhǔn)模板庫(STL)中的set容器。Visual C+ 使用2003 C+標(biāo)準(zhǔn)進(jìn)行編譯,但有以下幾點主要例外

7、之處:兩階段名稱 查找、異常規(guī)和導(dǎo)出。此外,Visual C+ 支持若干C+0x功能,例如,lambda、自動、static_assert 、rvalue 弓丨用禾口 extern 模板。呂說明-1如果要求符合標(biāo)準(zhǔn),請使用 /Za編譯器選項來禁用對該標(biāo)準(zhǔn)的Microsoft 擴(kuò)展。有關(guān)更多信息,請參見億a、/Ze (禁用語言擴(kuò)展)。系統(tǒng)必備若要完成本演練,您必須了解 C+語言的基礎(chǔ)知識。創(chuàng)建項目并添加源文件1. 通過以下方式創(chuàng)建一個項目:指向“文件”菜單上的“新建”,然后單擊“項2. 在“ Visual C+項目類型窗格中,單擊“ Win32,然后單擊“ Win32控制臺應(yīng)用程序。3. 鍵入項

8、目名稱。默認(rèn)情況下,包含項目的解決方案與項目同名,但您可以鍵入其他名稱。您也可以為項目鍵入其他位置。單擊“確定”創(chuàng)建項目。4. 在“Win32應(yīng)用程序向?qū)А敝?,單擊“下一步”,選擇“空項目”,然后單擊完成”。5. 如果未顯示“解決方案資源管理器”,請在“視圖”菜單上,單擊“解決方案 資源管理器”。6. 將一個新源文件添加到項目,如下所示。a. 在“解決方案資源管理器”中,右擊“源文件”文件夾,指向“添加”,然后單擊“新建項”。b. 在“代碼”節(jié)點中單擊“C+文件(.cpp) ” ,為文件鍵入名稱,然后單 擊添加。該.cpp文件即顯示在“解決方案資源管理器”中的“源文件”文件夾中,并且文件將在V

9、isual Studio編輯器中打開。7. 在編輯器的文件中,鍵入使用標(biāo)準(zhǔn)C+庫的有效C+程序,或者復(fù)制示例程序之一并將其粘貼在文件中。例如,您可以使用 set:find (STL Samples)示例程序,該程序是幫助中附帶的標(biāo)準(zhǔn)模板庫示例之一。如果使用該示例程序,請注意using namespace std; 指令。此指令使程序能夠使用cout和endl,而無需完全限定名(std:cout 和std:endl )。8. 保存該文件。9. 在“生成”菜單上,單擊“生成解決方案”。“輸出”窗口顯示有關(guān)編譯過程的信息,例如,生成日志的位置,以及指示生成 狀態(tài)的消息。10. 在“調(diào)試”菜單上,單擊

10、“開始執(zhí)行(不調(diào)試)”。如果使用了示例程序,將顯示一個命令窗口,其中顯示是否在集合中找到了特定 的整數(shù)。在命令行上編譯本機(jī) C+程序Visual C+包括一個C+編譯器,可用來創(chuàng)建從基本 Visual C+程序到 Windows窗 體應(yīng)用程序和組件的各種程序。通過按此演練的過程進(jìn)行操作,您可以通過使用文本編輯器創(chuàng)建基本的Visual C+程序,然后在命令行上對其進(jìn)行編譯。也可以編譯使用 Visual Studio 集成開發(fā)環(huán)境(IDE) 創(chuàng)建的Visual C+ 程序。 有 關(guān)更多信息,請參見 Walkthrough: Compiling a C+ Program that Targets t

11、he CLRin Visual Studio 。您可以使用自己的 Visual C+程序,而不是鍵入下面步驟中所示的程序。也可以使用其他幫助主題中的任何 Visual C+ 代碼示例程序。系統(tǒng)必備若要完成本演練,您必須了解C+語言的基礎(chǔ)知識。創(chuàng)建Visual C+ 源文件并在命令行上對其進(jìn)行編譯1.打開“Visual Studio 2010命令提示”窗口,方法是單擊“開始”,指向旬“所有程序、“ Microsoft Visual Studio 2010”、“ Visual Studio 工具,然后單擊“Visual Studio 2010命令提示”0可能需要管理員憑據(jù)才能成功編譯此演練中的代碼

12、,具體情況視計算機(jī)的操作系統(tǒng)和配置而定。若要以管理員身份運(yùn)行“ Visual Studio 2010命令提示”窗口,請右擊“Visual Studio 2010命令提示”,然后單擊“以管理員身份運(yùn)行”02.在命令提示符下,鍵入notepad basic.cpp ,并按 Enter。在系統(tǒng)提示是否創(chuàng)建文件時,單擊“是”03.在記事本中,鍵入下列各行。復(fù)制代碼#in elude viostreamint mai n()std:cout 單擊“ C+文件(.cpp) ”,鍵入一個文件名,然后單擊“添加”。該.cpp文件即顯示在“解決方案資源管理器”中的“源文件”文件夾中,并且,在鍵入要包含在該文件中

13、的代碼的位置,出現(xiàn)一個選項卡式窗口。6.在Visual Studio中,在新創(chuàng)建的選項卡中單擊并鍵入有效的Visual C+ 程序,或者復(fù)制并粘貼示例程序之一。例如,您可以使用 如何:編與文本文件(C+/CLI)示例程序(位于 編程指南中的“文件處理和I/O ”節(jié)點)。如果要使用示例程序,通知您使用gcnew關(guān)鍵子而不是 new,在創(chuàng)建.NET對象,并且,時gcnew返回句柄(A)而不是指針(*):StreamWriterA sw = gcnew StreamWriter(fileName);有關(guān)新Visual C+語法的更多信息,請參見適用于運(yùn)行時平臺的組件擴(kuò)展。7.在“生成”菜單上,單擊“

14、生成解決方案”。“輸出”窗口顯示有關(guān)編譯過程的信息,如生成日志的位置,以及指示生成狀態(tài)的消息。如果進(jìn)行了更改,并在未執(zhí)行生成的情況下運(yùn)行該程序,則對話框可能指示該項 目已過期。如果要讓Visual Studio始終使用文件的當(dāng)前版本,并且在每次生成應(yīng)用程序時不發(fā)出提示,請在單擊“確定”之前選中此對話框上的復(fù)選框。8.9.在“調(diào)試”菜單上,單擊“開始執(zhí)行(不調(diào)試)”。如果您使用的是示例程序,則在運(yùn)行程序時將顯示一個命令窗口,指示已創(chuàng)建 了該文本文件。按任意鍵,關(guān)閉該命令窗口。textfile.txt文本文件現(xiàn)在位于您的項目目錄中。您可以使用記事本打開此文件。一說明選擇空CLR項目模板會自動設(shè)置

15、/clr 編譯器選項。 若要驗證這一點,請在 “解 決方案資源管理器”中右擊該項目,再單擊“屬性”,然后選中“配置屬性”的“常 規(guī)”節(jié)點中的“公共語言運(yùn)行時支持” 選項。編譯C程序Visual Studio包括可用來創(chuàng)建從基本基本的 C程序到windows API應(yīng)用程序的c.編譯器。此演練演示如何使用文本編輯器創(chuàng)建一個基本的C程序,然后在命令行上對其進(jìn)行編譯。您可以使用自己的 C程序,而不是鍵入此演練中所示的示例程序。也可以使用幫助主題中包含的任何 C代碼示例程序。默認(rèn)情況下,Visual C+編譯器將以.c結(jié)尾的所有文件視為 C源代碼,將以.cpp結(jié) 尾的所有文件視為 C+源代碼。若要強(qiáng)制

16、編譯器將所有文件視為C (而不管文件擴(kuò)展名如何),請使用/Tc編譯器選項。系統(tǒng)必備您必須了解C語言的基礎(chǔ)知識。創(chuàng)建C源文件并在命令行上對其進(jìn)行編譯1. 打開開發(fā)人員命令提示。在 啟動 屏幕的windows 8,在中,選擇 VS2012開發(fā)人員命令提示 平鋪。在早期版本中,選擇啟動 按鈕,展開 所有程序、Microsoft Visual Studio 2012 和 Visual Studio工具,然后選擇 VS2012 開發(fā)人員命令提示?;趙indows的版本在計算機(jī)和系統(tǒng)安全配置中,您可能必須打開VS2012開發(fā)人員命令提示的快捷菜單中選擇以管理員身份運(yùn)行成功生成和運(yùn)行按這些步 驟創(chuàng)建的應(yīng)用

17、程序。-說明VS2012開發(fā)人員命令提示 自動設(shè)置C編譯器和所需的任何庫的正確路徑。應(yīng)使用它而不是使用普通的“命令提示符”窗口。有關(guān)更多信息,請參見 為命令行生成設(shè)置路徑和環(huán)境變量。2.在命令提示,請創(chuàng)建源文件的目錄并使其成為當(dāng)前工作目錄。例如,鍵入mdc:simple 并按enter 創(chuàng)建名為Simple 的目錄,然后鍵入cd c:simple并按en ter 更改到該目錄。3.在命令提示符處,鍵入notepad 并按enter。4.在記事本中,輸入以下行。您可以在編譯器顯示的多行輸出信息中看到可執(zhí)行程序的名稱。Outputx86 copyright (c) Microsoft Corpor

18、ation的 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.obj8. 若要查看文件列表中工作目錄中,鍵入 dir并按enter。.obj文件是可忽略的中間格式文件。9. 若要運(yùn)行程序,鍵入其名稱,不帶文件擴(kuò)展名(例如,simple 并按enter。程序顯示此文本然后退出:This is a n ative C progra

19、m.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的更多信息,請參見Win dows API。說重要事項為了可以更加清楚地說明本文檔各步驟中的特定代碼段,我們可能會省略一個有效應(yīng)用程序所必需的某些代碼語句,例如in elude指令和全局變量聲明。本文

20、檔末尾的示例一節(jié)顯示了完整代碼。系統(tǒng)必備若要完成本演練,您必須了解C+語言的基礎(chǔ)知識。有關(guān)視頻演示,請參見 Visual Studio 2008 文檔中的 Video Howto: Creating Win32 Applications (C+)(視頻幫助:創(chuàng)建 Win32 應(yīng)用程序(C+)。創(chuàng)建基于Win32的項目1. 在“文件”菜單上,單擊“新建”,然后單擊“項目”。2. 在“新建項目”對話框的左側(cè)窗格中,單擊“已安裝的模板”,單擊“VisualC+ ,然后選擇“Win3 。在中間窗格中,選擇 “Win32項目”。在名稱”框中,鍵入項目名稱,例如win32app。單擊確定”。3. 在“Wi

21、n32應(yīng)用程序向?qū)А钡摹皻g迎”頁上,單擊 “下一步”。4. 在“應(yīng)用程序設(shè)置”頁上的在“應(yīng)用程序類型” 下,選擇“Windows應(yīng)用程序”。在“附加選項”下,選擇“空項目”。單擊“完成”創(chuàng)建項目。5. 在“解決方案資源管理器”中,右擊 Win32app項目,單擊“添加”,然后單擊“新建項”。在“添加新項”對話框中選擇“C+文件(.cpp) ” 。在“名稱” 框中,鍵入文件名稱,例如GT_HelloWorldWin32.cpp 。 單擊“添加”。啟動基于Win32的應(yīng)用程序1. 就像每個C應(yīng)用程序和C+應(yīng)用程序都以 main函數(shù)作為起點那樣,每個基于Win32的應(yīng)用程序同樣必須要有WinMain

22、函數(shù)。WinMain具有以下語法。復(fù)制代碼int WINAPI WinM ai n(HINSTANCE hln sta nee,HINSTANCE hPrevI nsta nee,LPSTR lpCmdLi ne,int n CmdShow);有關(guān)此函數(shù)的參數(shù)和返回值的信息,請參見WinM ai n函數(shù)。2. 由于應(yīng)用程序代碼必須使用現(xiàn)有定義,因此應(yīng)將in elude語句添加到文件中復(fù)制代碼#i nclude vwin dows.h#in clude #in clude vstri ng.h#in clude 3. 除 WinMain函數(shù)外,每個基于 Win32的應(yīng)用程序還必須具有一個窗口過程

23、函 數(shù)。此函數(shù)通常名為 WndProa WndProc具有以下語法。復(fù)制代碼LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);此函數(shù)處理應(yīng)用程序從操作系統(tǒng)接收的許多消息。例如,在具有對話框(該對話框中有一個“確定”按鈕)的應(yīng)用程序中,如果用戶單擊該按鈕,操作系統(tǒng)就會 向該應(yīng)用程序發(fā)送一條消息,告知已單擊該按鈕。WndProc負(fù)責(zé)響應(yīng)該事件。在 此示例中,相應(yīng)的響應(yīng)可能是關(guān)閉該對話框。有關(guān)更多信息,請參見 窗口過程。向WinMain函數(shù)添加功能1. 在 WinMain函數(shù)中,創(chuàng)建 WNDCLASSE類型的窗口類結(jié)構(gòu)。此結(jié)構(gòu)包含有關(guān)該窗口的信

24、息,例如,應(yīng)用程序圖標(biāo)、窗口的背景色、要在標(biāo)題欄中顯示的名稱、 窗口過程函數(shù)的名稱等等。下面的示例演示一個典型 WNDCLASSE結(jié)構(gòu)。復(fù)制代碼WNDCLASSEX wcex;wcex.cbSize = sizeof(WNDCLASSEX);wcex.style = CS_HREDRAW | CS_VREDRAW;wcex.lpfnWndProc = WndProc;wcex.cbCIsExtra = 0;wcex.cbW ndExtra = 0;wcex.hI nsta nee= hln sta nee;wcex.hIc on= Loadlc on(hln sta nee,MAKEINTRE

25、SOURCE(IDI_APPLICATION);wcex.hCursor = LoadCursor(NULL, IDC_ARROW);wcex.hbrBackgrou nd = (HBRUSH)(COLOR_WINDOW+1);wcex.IpszMe nuName = NULL;wcex .I pszCIassName = szWi ndowClass;wcex.hIc onSm= LoadIc on( wcex.h In sta nee,MAKEINTRESOURCE(IDI_APPLICATION);有關(guān)此結(jié)構(gòu)的各字段的信息,請參見WNDCLASSEX2. 現(xiàn)在您已經(jīng)創(chuàng)建一個窗口類,接下來

26、必須將其注冊。使用RegisterCIassEx 函數(shù),并將窗口類結(jié)構(gòu)作為參數(shù)進(jìn)行傳遞。復(fù)制代碼if (!RegisterClassEx(&wcex)MessageBox(NULL,_T(Call to RegisterClassEx failed!),_T(Wi n32 Guided Tour),NULL);return 1;3.現(xiàn)在可以創(chuàng)建一個窗口。使用CreateWindow函數(shù)。復(fù)制代碼static TCHAR szWi ndowClass = _T(wi n32app);static TCHAR szTitle = _T(Wi n32 Guided Tour Applicatio n

27、);/ The parameters to CreateWi ndow expla in ed:/ szWi ndowClass: the n ame of the applicati on/ szTitle: the text that appears in the title bar/ WS_OVERLAPPEDWINDOW: the type of wi ndow to create/ CW_USEDEFAULT, CW_USEDEFAULT: in itial position (x, y)/ 500, 100: in itial size (width, le ngth)/ NULL

28、: the pare nt of this win dow/ NULL: this applicati on does not have a menu bar/ hln sta nee: the first parameter from WinM ai n/ NULL: not used in this applicati onHWND hWnd = CreateWi ndow(szWi ndowClass,szTitle,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, CW_USEDEFAULT,500, 100,NULL,NULL,hln sta nee,NULL);

29、if (!hWnd)MessageBox(NULL,_T(Call to CreateWi ndow failed!),_T(Wi n32 Guided Tour),NULL);return 1;此函數(shù)返回HWND它是某個窗口的句柄。有關(guān)更多信息,請參見Windows數(shù)據(jù)類型。4. 現(xiàn)在,使用下列代碼來顯示窗口。復(fù)制代碼/ The parameters to ShowWi ndow expla in ed:/ hWnd: the value returned from CreateWi ndow/ n CmdShow: the fourth parameter from WinM ai n S

30、howWi ndow(hWnd,n CmdShow);UpdateWi ndow(hWnd);WndProc 函數(shù)。如果應(yīng)用程序收到一條消此時,所顯示的窗口不會有太多容,因為您尚未實現(xiàn)5. 現(xiàn)在添加一個消息循環(huán)以偵聽操作系統(tǒng)發(fā)送的消息。息,則此循環(huán)會將該消息調(diào)度至WndProc函數(shù)以接受處理。消息循環(huán)類似于下列代碼。復(fù)制代碼MSG msg;while (GetMessage(&msg, NULL, 0, 0)Tran slateMessage(&msg);DispatchMessage(&m sg);return (int) msg.wParam;有關(guān)消息循環(huán)中各結(jié)構(gòu)和函數(shù)的更多信息,請參見M

31、SG GetMessageTranslateMessage 禾口 DispatchMessage。此時,WinMain函數(shù)應(yīng)與下列代碼類似。復(fù)制代碼int WINAPI WinM ai n( HINSTANCE hI nsta nee, HINSTANCE hPrevI nsta nee, LPSTR lpCmdLi ne, int nCmdShow)WNDCLASSEX wcex;wcex.cbSize = sizeof(WNDCLASSEX);wcex.style = CS_HREDRAW | CS_VREDRAW; wcex.lpfnWndProc = WndProc;wcex.cbCl

32、sExtra = 0;wcex.cbW ndExtra = 0;wcex.hI nsta nee= hln sta nee;wcex.hIc on= Loadlc on(hln sta nee,MAKEINTRESOURCE(IDI_APPLICATION);wcex.hCursor = LoadCursor(NULL, IDC_ARROW); wcex.hbrBackgrou nd = (HBRUSH)(COLOR_WINDOW+1); wcex.lpszMe nuName = NULL;wcex .l pszClassName = szWi ndowClass;wcex.hIc onSm=

33、 LoadIc on( wcex.h In sta nee,MAKEINTRESOURCE(IDI_APPLICATION);if (!RegisterClassEx(&wcex)MessageBox(NULL,_T(Call to RegisterClassEx failed!),_T(Wi n32 Guided Tour),NULL);return 1;hlnst = hln sta nee; / Store in sta nee han dle in our global variable/ The parameters to CreateWi ndow expla in ed:/ sz

34、Wi ndowClass: the n ame of the applicati on/ szTitle: the text that appears in the title bar/ WS_OVERLAPPEDWINDOW: the type of wi ndow to create/ CW_USEDEFAULT, CW_USEDEFAULT: in itial positio n (x, y)/ 500, 100: in itial size (width, le ngth)/ NULL: the pare nt of this win dow/ NULL: this applicati

35、 on dows not have a menu bar/ hln sta nee: the first parameter from WinM ai n/ NULL: not used in this applicati onHWND hWnd = CreateWi ndow(szWi ndowClass,szTitle,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, CW_USEDEFAULT,500, 100,NULL,NULL,hln sta nee,NULL);if (!hWnd)MessageBox(NULL,_T(Call to CreateWi ndow

36、failed!), _T(Wi n32 Guided Tour),NULL);return 1;/ The parameters to ShowWi ndow expla in ed:/ hWnd: the value returned from CreateWi ndow/ n CmdShow: the fourth parameter from WinM ain ShowWi ndow(hWnd,n CmdShow);UpdateWi ndow(hWnd);/ Main message loop:MSG msg;while (GetMessage(&msg, NULL, 0, 0)Tran

37、 slateMessage(&msg);DispatchMessage(&m sg);return (int) msg.wParam;向WndProc函數(shù)添加功能1.右要啟用 WndProc函數(shù)來處理應(yīng)用程序所收到的消息,請頭現(xiàn)switch 語句。要處理的第一條消息是WM PAINT消息。如果必須更新所顯示的應(yīng)用程序窗口的一部分,該應(yīng)用程序就會收到此消息。(首次顯示該窗口時,必須將其全部更新。)若要處理 WM PAINT消息,請首先調(diào)用 BeginPaint,然后處理用于布局該窗口中 的文本、按鈕和其他控件的所有邏輯,再調(diào)用EndPaint。對于此應(yīng)用程序,開始調(diào)用和結(jié)束調(diào)用之間的邏輯會在窗口

38、中顯示字符串“Hello, World! ”。在下列代碼中,請注意 TextOut函數(shù)用于顯示該字符串。復(fù)制代碼PAINTSTRUCT ps;HDC hdc;TCHAR greeti ng = _T(Hello, World!);switch (message)case WM_PAINT:hdc = Begi nPai nt(hW nd, & ps);/ Here your application is laid out./ For this in troduct ion, we just print out Hello, World!/ in the top left corner.Text

39、Out(hdc,5, 5,greeti ng, _tcsle n( greet in g);/ End applicati on-specific layout sect ion.En dPai nt(hWnd, &ps);break;2.應(yīng)用程序通常會處理許多其他消息,例如WM CREAT和 WM DESTRQY下列代碼展示了一個基本但完整的WndProc函數(shù)。復(fù)制代碼LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)PAINTSTRUCT ps;HDC hdc;TCHAR greet

40、 in g = _T(Hello, World!);switch (message)case WM_PAINT:hdc = Begi nPai nt(hW nd, & ps);/ Here your application is laid out./ For this in troducti on, we just print out Hello, World!/ in the top left cor ner.TextOut(hdc,5, 5,greeti ng, _tcsle n( greet in g);/ End applicati on specific layout sect io

41、n.En dPai nt(hW nd, & ps);break;case WM_DESTROY:PostQuitMessage(O);break;default:return DefWi ndowProc(hW nd, message, wParam, lParam); break;return 0;1. 創(chuàng)建本演練中之前“創(chuàng)建基于Win32的項目”中的基于 Win32的項目。2. 復(fù)制這些步驟之后的代碼,然后將其粘貼到GT_HelloWorldWi n32.cpp 源文件中。3. 在“生成”菜單上,單擊“生成解決方案”。4. 若要運(yùn)行該應(yīng)用程序,請按F5。包含文本“ hello world

42、”!的窗口應(yīng)顯示在顯示的左上角。代碼復(fù)制代碼/ GT_HelloWorldWi n32.cpp/ compile with: /D_UNICODE /DUNICODE /DWIN32 /D_WINDOWS /c#i nclude vwin dows.h#in clude #in clude vstri ng.h#in clude / Global variables/ The mai n wi ndow class n ame.static TCHAR szWi ndowClass = _T(wi n32app);/ The string that appears in the applica

43、tions title bar.static TCHAR szTitle = _T(Wi n32 Guided Tour Applicatio n);HINSTANCE hI nst;/ Forward declarati ons of fun cti ons in cluded in this code module: LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);int WINAPI WinM ai n( HINSTANCE hln sta nee,HINSTANCE hPrevI nsta nee,LPSTR lpCmdLi n

44、e, int n CmdShow)WNDCLASSEX wcex;wcex.cbSize = sizeof(WNDCLASSEX);wcex.style = CS_HREDRAW | CS_VREDRAW; wcex.lpfnWndProc = WndProc;wcex.cbClsExtra = 0;wcex.cbW ndExtra = 0;wcex.hI nsta nee = hln sta nee; wcex.hIc on= LoadIc on(hln sta nee,MAKEINTRESOURCE(IDI_APPLICATION);wcex.hCursor = LoadCursor(NU

45、LL, IDC_ARROW); wcex.hbrBackgrou nd = (HBRUSH)(COLOR_WINDOW+1); wcex.lpszMe nu Name = NULL;wcex .l pszClassName = szWi ndowClass;wcex.hIc onSm= LoadIc on( wcex.h In sta nee,MAKEINTRESOURCE(IDI_APPLICATION);if (!RegisterClassEx(&wcex)MessageBox(NULL,_T(Call to RegisterClassEx failed!),_T(Wi n32 Guide

46、d Tour),NULL);return 1;hlnst = hln sta nee; / Store in sta nee han dle in our global variable/ The parameters to CreateWi ndow expla in ed:/ szWi ndowClass: the n ame of the applicati on/ szTitle: the text that appears in the title bar/ WS_OVERLAPPEDWINDOW: the type of wi ndow to create/ CW_USEDEFAU

47、LT, CW_USEDEFAULT: in itial positio n (x, y)/ 500, 100: in itial size (width, le ngth)/ NULL: the pare nt of this win dow/ NULL: this applicati on does not have a menu bar/ hln sta nee: the first parameter from WinMain/ NULL: not used in this applicati onHWND hWnd = CreateWi ndow(szWi ndowClass, szT

48、itle,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, CW_USEDEFAULT,500, 100,NULL,NULL,hln sta nee,NULL);if (!hWnd)MessageBox(NULL,_T(Call to CreateWi ndow failed!),_T(Wi n32 Guided Tour),NULL);return 1;/ The parameters to ShowWi ndow expla in ed:/ hWnd: the value returned from CreateWi ndow/ n CmdShow: the fourth parameter from WinMainShowWi ndow(hWnd,n CmdShow)

溫馨提示

  • 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

提交評論