全新 Microsoft Visual Studio指南_第1頁
全新 Microsoft Visual Studio指南_第2頁
全新 Microsoft Visual Studio指南_第3頁
全新 Microsoft Visual Studio指南_第4頁
全新 Microsoft Visual Studio指南_第5頁
已閱讀5頁,還剩20頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Visual Studio 2013 dektop Visual C+可以在微軟官方站點直接下載最新的express版本,注冊并且免費使用強大而靈活的 Visual C+ 語言和工具在 Visual Studio 允許在 .NET framework 上運行本機 Windows 應用商店 apps、本機桌面 apps 和托管 apps 的開發。 Visual C+ 包含以下元素: Visual Studio 開發環境 開發環境通過編寫代碼以支持整個開發工作流,從創建和管理的項目,調試,進行分析并部署到最終用戶。可視化工具 C+compiler 編譯器支持本機代碼以 .NET 公共語言運行時 (

2、CLR) 的開發和開發。 Visual C+ 直接支持 x86 計算機的生成,并包括面向 x64 和 ARM 的編譯器。 它優化所有平臺的性能。 庫 C 運行庫 (crt) 包括安全增強選擇要了解所造成安全問題的函數。標準 C+ 庫 包含 (mfc) 庫和標準模板庫 (STL)。活動模板庫 (ATL) 傳遞給 COM 組件和 apps 的創建。Microsoft 基礎類 (MFC) 庫選件 對的桌面 apps 創建具有傳統或 Office 樣式的用戶界面。并行模式庫 (PPL) 對 CPU 執行的異步和并行算法。C+ AMP (C+ 加速的大量并行) 對于大量在 GPU 執行的并行算法。Win

3、dows 運行時 C+ 模板庫 (WRL), 為 Windows 應用商店 apps 和元素的 COM 樣式的開發。.NET framework 選件類庫 (通過使用 C+/CLI),STL/CLR 和 C+ 支持庫 對托管 apps 的開發。此外,在中,當使用 Visual C+ 時也可以訪問 Windows 應用商店 apps 和桌面 apps 的 windows API。 標頭文件和 .winmd 文件這些 API 的包含在 Visual Studio 中,在 Windows 軟件開發包 (SDK)Windows 8的。 Visual Studio 2012 - Visual C+Win

4、32桌面應用程序(Visual C+)可以創建 Win32 app,如果要在從 Windows 95 的 windows 版本使用基于 windows 的用戶界面,并且可以運行到 Windows 8的本機桌面應用程序時。 可以使用 Visual Studio Express 2012 for Windows Desktop 或任何除 Visual Studio Express 2012 for Windows 8的 Visual Studio 版本。 Win32 應用程序 是使用消息循環處理 windows 消息直接而不是使用一種機制 (如 Microsoft 基礎類 (MFC),活動模板庫

5、(ATL) 或 .NET framework app 的約定術語。 雖然這個術語是“Win32”,它可以引用 32 位或 64 位應用程序。 在 C+ 的 Win32 應用程序可以使用 C 運行時 (crt) 和標準模板庫 (STL) 選件類和函數,COM 對象和任何公共函數,公共稱為 windows API。 有關 Win32 apps 介紹在 C+ 中,請參見 了解到窗口的程序在 C+。 Win32 應用程序是一種創建窗口的本機桌面應用程序;另一種方法是 MFC 應用程序。 MFC 是企業類型的阿普斯特殊的默認值選擇阿普斯具有許多用戶界面控件或自定義用戶控件。 MFC 用于序列化、文本處理

6、、打印和當今用戶界面元素提供方便的幫助器類選件例如功能區上。 這些選件類對 Win32 應用程序不可用。 若要創建 MFC 或 ATL 程序需要 Microsoft Visual Studio Professional 2012 或更高版本。 Visual Studio Express 2012 for Windows Desktop 不包括 MFC 或 ATL 支持。 創建標準C+程序在 Visual Studio 集成開發環境 (IDE) 可以使用 Visual C+ 創建標準 C+ 程序。 通過采用此演練中的步驟,您可以創建一個項目,向該項目添加一個新文件,修改該文件以添加 C+ 代碼,

7、然后使用 Visual Studio 編譯并運行程序。 您可以鍵入自己的 C+ 程序,或者使用示例程序之一。 此演練中的示例程序是一個控制臺應用程序。 此應用程序使用標準模板庫 (STL) 中的 set 容器。 Visual C+ 使用 2003 C+ 標準進行編譯,但有以下幾點主要例外之處:兩階段名稱查找、異常規范和導出。 此外,Visual C+ 支持若干 C+0x 功能,例如,lambda、自動、static_assert、rvalue 引用和 extern 模板。 說明如果要求符合標準,請使用 /Za 編譯器選項來禁用對該標準的 Microsoft 擴展。 有關更多信息,請參見/Za、

8、/Ze(禁用語言擴展)。  系統必備 若要完成本演練,您必須了解 C+ 語言的基礎知識。創建項目并添加源文件1. 通過以下方式創建一個項目:指向“文件”菜單上的“新建”,然后單擊“項目”。2. 在“Visual C+”項目類型窗格中,單擊“Win32”,然后單擊“Win32 控制臺應用程序”。3. 鍵入項目名稱。默認情況下,包含項目的解決方案與項目同名,但您可以鍵入其他名稱。 您也可以為項目鍵入其他位置。 單擊“確定”創建項目。4. 在“Win32 應用程序向導”中,單擊“下一步”,選擇“空項目”,然后單擊“完成”。5. 如果未顯示“解決方案資源管理器”,請在“視圖”菜單上,單擊“解

9、決方案資源管理器”。6. 將一個新源文件添加到項目,如下所示。a. 在“解決方案資源管理器”中,右擊“源文件”文件夾,指向“添加”,然后單擊“新建項”。b. 在“代碼”節點中單擊“C+ 文件(.cpp)”,為文件鍵入名稱,然后單擊“添加”。該 .cpp 文件即顯示在“解決方案資源管理器”中的“源文件”文件夾中,并且文件將在 Visual Studio 編輯器中打開。7. 在編輯器內的文件中,鍵入使用標準 C+ 庫的有效 C+ 程序,或者復制示例程序之一并將其粘貼在文件中。例如,您可以使用 set:find (STL Samples)示例程序,該程序是幫助中附帶的標準模板庫示例之一。如果使用該示

10、例程序,請注意 using namespace std; 指令。 此指令使程序能夠使用 cout 和 endl,而無需完全限定名(std:cout 和 std:endl)。 8. 保存該文件。9. 在“生成”菜單上,單擊“生成解決方案”。“輸出”窗口顯示有關編譯過程的信息,例如,生成日志的位置,以及指示生成狀態的消息。10. 在“調試”菜單上,單擊“開始執行(不調試)”。如果使用了示例程序,將顯示一個命令窗口,其中顯示是否在集合中找到了特定的整數。在命令行上編譯本機C+程序Visual C+ 包括一個 C+ 編譯器,可用來創建從基本 Visual C+ 程序到 Windows 窗體應用程序和組

11、件的各種程序。通過按此演練的過程進行操作,您可以通過使用文本編輯器創建基本的 Visual C+ 程序,然后在命令行上對其進行編譯。也可以編譯使用 Visual Studio 集成開發環境 (IDE) 創建的 Visual C+ 程序。 有關更多信息,請參見Walkthrough: Compiling a C+ Program that Targets the CLR in Visual Studio。 您可以使用自己的 Visual C+ 程序,而不是鍵入下面步驟中所示的程序。 也可以使用其他幫助主題中的任何 Visual C+ 代碼示例程序。  系統必備 若要完成本演練,您必須了

12、解 C+ 語言的基礎知識。創建 Visual C+ 源文件并在命令行上對其進行編譯1. 打開“Visual Studio 2010 命令提示”窗口,方法是單擊“開始”,指向“所有程序”、“Microsoft Visual Studio 2010”、“Visual Studio 工具”,然后單擊“Visual Studio 2010 命令提示”。可能需要管理員憑據才能成功編譯此演練中的代碼,具體情況視計算機的操作系統和配置而定。 若要以管理員身份運行“Visual Studio 2010 命令提示”窗口,請右擊“Visual Studio 2010 命令提示”,然后單擊“以管理員身份運行”。 2

13、. 在命令提示符下,鍵入 notepad basic.cpp,并按 Enter。在系統提示是否創建文件時,單擊“是”。3. 在記事本中,鍵入下列各行。復制代碼 #include <iostream>int main() std:cout << "This is a native C+ program." << std:endl; return 0;4. 在“文件”菜單上,單擊“保存”。這樣就創建了一個 Visual C+ 源文件。5. 關閉記事本。6. 在命令提示符下,鍵入 cl /EHsc basic.cpp,并按 Enter。 /EH

14、sc 命令行選項指示編譯器啟用 C+ 異常處理。 有關更多信息,請參見/EH(異常處理模型)。 cl.exe 編譯器將生成一個名為 basic.exe 的可執行程序。您可以在編譯器顯示的多行輸出信息中看到可執行程序的名稱。7. 若要查看目錄中具有名稱 basic 以及任何文件擴展名的文件的列表,請鍵入 dir basic.* 并按 Enter。.obj 文件是一個中間格式文件,可以安全地忽略它。8. 若要運行 basic.exe 程序,請鍵入 basic 并按 Enter。該程序顯示以下文本并退出:This is a native C+ program.9. 若要關閉“Visual Studi

15、o 2010 命令提示”窗口,請鍵入 exit 并按 Enter。 編譯使用 .NET 類的 Visual C+ 程序 下面的步驟演示如何編譯使用 .NET Framework 類的 Visual C+ 程序。您必須使用 /clr(公共語言運行時編譯)編譯器選項,因為此程序使用 .NET 類并且必須包括必要的 .NET 庫。 Visual C+ 編譯器生成的 .exe 文件包含 MSIL 代碼,而不是可由計算機執行的指令。 按照本過程中的步驟編譯幫助主題中的任何 Visual C+ 示例程序。在命令行上編譯 Visual C+ .NET 控制臺應用程序1. 打開“Visual Stu

16、dio 2010 命令提示”窗口,方法是單擊“開始”,指向“所有程序”、“Microsoft Visual Studio 2010”、“Visual Studio 工具”,然后單擊“Visual Studio 2010 命令提示”。可能需要管理員憑據才能成功編譯此演練中的代碼,具體情況視計算機的操作系統和配置而定。 若要以管理員身份運行“Visual Studio 2010 命令提示”窗口,請右擊“Visual Studio 2010 命令提示”,然后單擊“以管理員身份運行”。 2. 在命令提示符下,鍵入 notepad basicclr.cpp,并按 Enter。在系統提示是否創建文件時,單

17、擊“是”。3. 在記事本中,鍵入下列各行。復制代碼 int main() System:Console:WriteLine("This is a Visual C+ program.");4. 在“文件”菜單上,單擊“保存”。您已經創建了一個使用 .NET 類 (Console) 的 Visual C+ 源文件,該文件位于 System 命名空間。5. 關閉記事本。6. 在命令提示符下,鍵入 cl /clr basicclr.cpp,并按 Enter。 cl.exe 編譯器將生成一個名為 basicclr.exe 的可執行程序。 7. 若要查看目錄中具有名稱 basiccl

18、r 以及任何文件擴展名的文件的列表,請鍵入 dir basicclr.* 并按 Enter。.obj 文件是一個中間格式文件,可以安全地忽略它。.manifest 文件是包含有關程序集的信息的 XML 文件。 (程序集是 .NET 部署單元,例如 .exe 程序或 .dll 組件或庫。) 8. 若要運行 basicclr.exe 程序,請鍵入 basicclr 并按 Enter。該程序顯示以下文本并退出:This is a Visual C+ program.9. 若要關閉“Visual Studio 2010 命令提示”窗口,請鍵入 exit 并按 Enter。在Visual Studio中

19、編譯面向CLR的C+程序通過使用 Visual Studio 開發環境,您可以創建使用 .NET 類的 Visual C+ 程序,并對它們進行編譯。在本過程中,您可以鍵入自己的 Visual C+ 程序,也可以使用示例程序之一。 本過程中使用的示例程序創建一個名為 textfile.txt 的文本文件,并將其保存到項目目錄中。  系統必備 這些主題假定您具備 C+ 語言的基礎知識。在 Visual Studio 中創建新項目并添加新的源文件1. 創建新項目。 在“文件”菜單上,指向“新建”,然后單擊“項目”。 2. 在“Visual C+ 項目類型”中單擊“CLR”,然后單擊“CLR

20、 空項目”。3. 鍵入項目名稱。默認情況下,包含項目的解決方案與新項目同名,當然,您也可以鍵入其他名稱。 如果愿意,您可以為項目輸入一個不同的位置。 單擊“確定”創建新項目。4. 如果“解決方案資源管理器”不可見,請單擊“視圖”菜單上的“解決方案資源管理器”。5. 向該項目添加新的源文件:· 在解決方案資源管理器中右擊“源文件”文件夾,指向“添加”并單擊“新建項.”。· 單擊“C+ 文件(.cpp)”,鍵入一個文件名,然后單擊“添加”。該 .cpp 文件即顯示在“解決方案資源管理器”中的“源文件”文件夾中,并且,在鍵入要包含在該文件中的代碼的位置,出現一個選項卡式窗口。6.

21、 在 Visual Studio 中,在新創建的選項卡中單擊并鍵入有效的 Visual C+ 程序,或者復制并粘貼示例程序之一。例如,您可以使用 如何:編寫文本文件 (C+/CLI) 示例程序(位于“編程指南”中的“文件處理和 I/O”節點)。如果要使用示例程序,通知您使用 gcnew關鍵字而不是 new,在創建 .NET 對象,并且,時 gcnew 返回句柄 () 而不是指針 (*):StreamWriter sw = gcnew StreamWriter(fileName);有關新 Visual C+ 語法的更多信息,請參見 適用于運行時平臺的組件擴展。7. 在“生成”菜單上,單擊“生成解

22、決方案”。“輸出”窗口顯示有關編譯過程的信息,如生成日志的位置,以及指示生成狀態的消息。如果進行了更改,并在未執行生成的情況下運行該程序,則對話框可能指示該項目已過期。 如果要讓 Visual Studio 始終使用文件的當前版本,并且在每次生成應用程序時不發出提示,請在單擊“確定”之前選中此對話框上的復選框。 8. 在“調試”菜單上,單擊“開始執行(不調試)”。9. 如果您使用的是示例程序,則在運行程序時將顯示一個命令窗口,指示已創建了該文本文件。 按任意鍵,關閉該命令窗口。 textfile.txt 文本文件現在位于您的項目目錄中。 您可以使用記事本打開此文件。 說明選擇空 CLR 項目模

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

24、 結尾的所有文件視為 C+ 源代碼。 若要強制編譯器將所有文件視為 C(而不管文件擴展名如何),請使用 /Tc 編譯器選項。  系統必備 您必須了解 C 語言的基礎知識。創建 C 源文件并在命令行上對其進行編譯1. 打開開發人員命令提示。 在 啟動 屏幕的 windows 8,在中,選擇 VS2012 開發人員命令提示 平鋪。 在早期版本中,選擇 啟動 按鈕,展開 所有程序、Microsoft Visual Studio 2012和 Visual Studio 工具,然后選擇 VS2012 開發人員命令提示。 基于 windows 的版本在計算機和系統安全配置中,您可能必須打開 VS

25、2012 開發人員命令提示 的快捷菜單中選擇 以管理員身份運行 成功生成和運行按這些步驟創建的應用程序。說明VS2012 開發人員命令提示 自動設置 C 編譯器和所需的任何庫的正確路徑。 應使用它而不是使用普通的“命令提示符”窗口。 有關更多信息,請參見為命令行生成設置路徑和環境變量。 2. 在命令提示,請創建源文件的目錄并使其成為當前工作目錄。 例如,鍵入 md c:simple 并按 enter 創建名為 Simple 的目錄,然后鍵入 cd c:simple 并按 enter 更改到該目錄。 3. 在命令提示符處,鍵入 notepad 并按 enter。4. 在記事本中,輸入以下行。Vi

26、sual C+ 復制代碼 #include <stdio.h>int main() printf("This is a native C program.n"); return 0; 5. 在菜單欄上,依次選擇 文件,保存 打開 另存為 對話框。 導航到已創建的內容。 在 文件名 框中,輸入一個名稱為源文件 (例如,simple.c 和中的 保存類型 然后在下拉列表中,選擇 所有文件 (*.*)。 選擇 保存 按鈕創建 c. 源文件在您的工作目錄。 6. 關閉記事本。7. 在命令提示,請與您的源一起的名稱指定 cl 命令文件 (例如,cl simple.c并按

27、enter 生成程序。 cl.exe 編譯器將生成將源文件的名稱的可執行程序,但是,有一個 .exe 文件名擴展名 (例如,Simple.exe。 您可以在編譯器顯示的多行輸出信息中看到可執行程序的名稱。Outputx86 copyright (c) Microsoft Corporation 的 Microsoft (r) C/C+ 編譯器優化第 17.00.50727.1 版。 保留所有權利。 simple.c Microsoft (r) 增量鏈接器第 11.00.50727.1 版 copyright (c) Microsoft Corporation。 保留所有權利。 /out:sim

28、ple.exe simple.obj 8. 若要查看文件列表中工作目錄中,鍵入 dir 并按 enter。.obj 文件是可忽略的中間格式文件。9. 若要運行程序,鍵入其名稱,不帶文件擴展名 (例如,simple并按 enter。程序顯示此文本然后退出:This is a native C program.10. 若要關閉命令提示符窗口,鍵入 exit 并按 enter。創建Win32應用程序本演練演示如何創建基于 Win32 的簡單基本應用程序,該應用程序在窗口中顯示“Hello, World!”。 您可以使用在此演練中開發的代碼作為創建其他基于 Win32 的應用程序的模式。 Win32

29、API(也稱為 Windows API)是用于創建 Windows 應用程序的基于 C 的框架。 有關 Win32 API 的更多信息,請參見 Windows API。 重要事項為了可以更加清楚地說明本文檔內各步驟中的特定代碼段,我們可能會省略一個有效應用程序所必需的某些代碼語句,例如 include 指令和全局變量聲明。 本文檔末尾的示例一節顯示了完整代碼。  系統必備 若要完成本演練,您必須了解 C+ 語言的基礎知識。有關視頻演示,請參見 Visual Studio 2008 文檔中的 Video How to: Creating Win32 Applications (C+)(

30、視頻幫助:創建 Win32 應用程序 (C+))。創建基于 Win32 的項目1. 在“文件”菜單上,單擊“新建”,然后單擊“項目”。2. 在“新建項目”對話框的左側窗格中,單擊“已安裝的模板”,單擊“Visual C+”,然后選擇“Win32”。 在中間窗格中,選擇“Win32 項目”。 在“名稱”框中,鍵入項目名稱,例如 win32app。 單擊“確定”。 3. 在“Win32 應用程序向導”的“歡迎”頁上,單擊“下一步”。4. 在“應用程序設置”頁上的在“應用程序類型”下,選擇“Windows 應用程序”。 在“附加選項”下,選擇“空項目”。 單擊“完成”創建項目。 5. 在“解決方案資

31、源管理器”中,右擊 Win32app 項目,單擊“添加”,然后單擊“新建項”。 在“添加新項”對話框中選擇“C+ 文件(.cpp)”。 在“名稱”框中,鍵入文件名稱,例如 GT_HelloWorldWin32.cpp。 單擊“添加”。 啟動基于 Win32 的應用程序1. 就像每個 C 應用程序和 C+ 應用程序都以 main 函數作為起點那樣,每個基于 Win32 的應用程序同樣必須要有 WinMain 函數。 WinMain 具有以下語法。 復制代碼 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR

32、 lpCmdLine, int nCmdShow);有關此函數的參數和返回值的信息,請參見 WinMain 函數。2. 由于應用程序代碼必須使用現有定義,因此應將 include 語句添加到文件中。復制代碼 #include <windows.h>#include <stdlib.h>#include <string.h>#include <tchar.h>3. 除 WinMain 函數外,每個基于 Win32 的應用程序還必須具有一個窗口過程函數。 此函數通常名為 WndProc。 WndProc 具有以下語法。 復制代碼 LRESULT CA

33、LLBACK WndProc(HWND, UINT, WPARAM, LPARAM);此函數處理應用程序從操作系統接收的許多消息。 例如,在具有對話框(該對話框中有一個“確定”按鈕)的應用程序中,如果用戶單擊該按鈕,操作系統就會向該應用程序發送一條消息,告知已單擊該按鈕。 WndProc 負責響應該事件。 在此示例中,相應的響應可能是關閉該對話框。 有關更多信息,請參見窗口過程。向 WinMain 函數添加功能1. 在 WinMain 函數中,創建 WNDCLASSEX 類型的窗口類結構。 此結構包含有關該窗口的信息,例如,應用程序圖標、窗口的背景色、要在標題欄中顯示的名稱、窗口過程函數的名稱

34、等等。 下面的示例演示一個典型 WNDCLASSEX 結構。 復制代碼 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.hCurs

35、or = LoadCursor(NULL, IDC_ARROW); wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); wcex.lpszMenuName = NULL; wcex.lpszClassName = szWindowClass; wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_APPLICATION);有關此結構的各字段的信息,請參見 WNDCLASSEX。2. 現在您已經創建一個窗口類,接下來必須將其注冊。 使用 RegisterClassEx 函數,并將窗口類結構

36、作為參數進行傳遞。 復制代碼 if (!RegisterClassEx(&wcex) MessageBox(NULL, _T("Call to RegisterClassEx failed!"), _T("Win32 Guided Tour"), NULL); return 1; 3. 現在可以創建一個窗口。 使用 CreateWindow 函數。 復制代碼 static TCHAR szWindowClass = _T("win32app");static TCHAR szTitle = _T("Win32 Gui

37、ded 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 (widt

38、h, 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, hIns

39、tance, NULL);if (!hWnd) MessageBox(NULL, _T("Call to CreateWindow failed!"), _T("Win32 Guided Tour"), NULL); return 1;此函數返回 HWND,它是某個窗口的句柄。 有關更多信息,請參見 Windows 數據類型。 4. 現在,使用下列代碼來顯示窗口。復制代碼 / The parameters to ShowWindow explained:/ hWnd: the value returned from CreateWindow/ nCmdS

40、how: the fourth parameter from WinMainShowWindow(hWnd, nCmdShow);UpdateWindow(hWnd);此時,所顯示的窗口不會有太多內容,因為您尚未實現 WndProc 函數。5. 現在添加一個消息循環以偵聽操作系統發送的消息。 如果應用程序收到一條消息,則此循環會將該消息調度至 WndProc 函數以接受處理。 消息循環類似于下列代碼。 復制代碼 MSG msg; while (GetMessage(&msg, NULL, 0, 0) TranslateMessage(&msg); DispatchMessage

41、(&msg); return (int) msg.wParam;有關消息循環中各結構和函數的更多信息,請參見 MSG、GetMessage、TranslateMessage 和 DispatchMessage。此時,WinMain 函數應與下列代碼類似。復制代碼 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) WNDCLASSEX wcex; wcex.cbSize = sizeof(WNDCLASSEX); wcex.style = CS_H

42、REDRAW | 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 = NUL

43、L; 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 h

44、andle 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

45、 (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,

46、 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

47、, nCmdShow); UpdateWindow(hWnd); / Main message loop: MSG msg; while (GetMessage(&msg, NULL, 0, 0) TranslateMessage(&msg); DispatchMessage(&msg); return (int) msg.wParam;向 WndProc 函數添加功能1. 若要啟用 WndProc 函數來處理應用程序所收到的消息,請實現 switch 語句。要處理的第一條消息是 WM_PAINT 消息。 如果必須更新所顯示的應用程序窗口的一部分,該應用程序就會收到此消

48、息。 (首次顯示該窗口時,必須將其全部更新。) 若要處理 WM_PAINT 消息,請首先調用 BeginPaint,然后處理用于布局該窗口中的文本、按鈕和其他控件的所有邏輯,再調用 EndPaint。 對于此應用程序,開始調用和結束調用之間的邏輯會在窗口中顯示字符串“Hello, World!”。 在下列代碼中,請注意 TextOut 函數用于顯示該字符串。 復制代碼 PAINTSTRUCT ps;HDC hdc;TCHAR greeting = _T("Hello, World!");switch (message)case WM_PAINT: hdc = BeginPa

49、int(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. 應用程序通常會處理許多其他消息,例如 WM_C

50、REATE 和 WM_DESTROY。 下列代碼展示了一個基本但完整的 WndProc 函數。 復制代碼 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 la

51、id 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(

52、hWnd, message, wParam, lParam); break; return 0; 示例 生成此示例1. 創建本演練中之前“創建基于 Win32 的項目”中的基于 Win32 的項目。2. 復制這些步驟之后的代碼,然后將其粘貼到 GT_HelloWorldWin32.cpp 源文件中。3. 在“生成”菜單上,單擊“生成解決方案”。4. 若要運行該應用程序,請按 F5。 包含文本“hello world”!的窗口應顯示在顯示的左上角。 代碼復制代碼 / GT_HelloWorldWin32.cpp/ compile with: /D_UNICODE /DUNICODE /

53、DWIN32 /D_WINDOWS /c#include <windows.h>#include <stdlib.h>#include <string.h>#include <tchar.h>/ Global variables/ The main window class name.static TCHAR szWindowClass = _T("win32app");/ The string that appears in the application's title bar.static TCHAR szTitle = _T("Win32 Guided Tour Application");HINSTANCE hInst;/ Forward declarations of functions include

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論