首页 全新 Microsoft Visual Studio2013指南

全新 Microsoft Visual Studio2013指南

举报
开通vip

全新 Microsoft Visual Studio2013指南全新 Microsoft Visual Studio2013指南 Visual Studio 2013 – dektop Visual C++ 可以在微软官方站点直接下载最新的express版本,注册并且免费使用 强大而灵活的 Visual C++ 语言和工具在 Visual Studio 允许在 .NET framework 上运行本机 Windows 应用商店 apps、本机桌面 apps 和托管 apps 的开发。 Visual C++ 包含以下元素: Visual Studio 开发环境 开发环境...

全新 Microsoft Visual Studio2013指南
全新 Microsoft Visual Studio2013指南 Visual Studio 2013 – dektop Visual C++ 可以在微软官方站点直接下载最新的express版本,注册并且免费使用 强大而灵活的 Visual C++ 语言和工具在 Visual Studio 允许在 .NET framework 上运行本机 Windows 应用商店 apps、本机桌面 apps 和托管 apps 的开发。 Visual C++ 包含以下元素: Visual Studio 开发环境 开发环境通过编写代码以支持整个开发工作流,从创建和管理的项目,调试,进行分析并部署到最终用户。 可视化工具 C++compiler 编译器支持本机代码以 .NET 公共语言运行时 (CLR) 的开发和开发。 Visual C++ 直接支持 x86 计算机的生成,并包括面向 x64 和 ARM 的编译器。 它优化所有平台的性能。 库 C 运行库 (crt) 包括安全增强选择要了解所造成安全问题的 关于工期滞后的函关于工程严重滞后的函关于工程进度滞后的回复函关于征求同志党风廉政意见的函关于征求廉洁自律情况的复函 数。 标准 C++ 库 mfc) 库和标准模板库 (STL)。 包含 ( 活动模板库 (ATL) 传递给 COM 组件和 apps 的创建。 Microsoft 基础类 (MFC) 库选件 对的桌面 apps 创建具有传统或 Office 样式的用户界面。 并行模式库 (PPL) 对 CPU 执行的异步和并行算法。 C++ AMP (C++ 加速的大量并行) 对于大量在 GPU 执行的并行算法。 Windows 运行时 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++ Win32桌面应用程序(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),活动模板库 (ATL) 或 .NET framework app 的 约定术语。 虽然这个术语是―Win32‖,它可以引用 32 位或 64 位应用程序。 在 C++ 的 Win32 应用程序可以使用 C 运行时 (crt) 和标准模板库 (STL) 选件类和函数, COM 对象和任何公共函数,公共称为 windows API。 有关 Win32 apps 介绍在 C++ 中,请参见 了解到窗口的程序在 C++。 Win32 应用程序是一种创建窗口的本机桌面应用程序;另一种 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 是 MFC 应用程序。 MFC 是企业类型的阿普斯特殊的默认值选择阿普斯具有许多用户界面控件或自定义用户控件。 MFC 用于序列化、文本处理、打印和当今用户界面元素提供方便的帮助器类选件例如功能区上。 这些选件类对 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++ 代码,然后使用 Visual Studio 编译并运行程序。 您可以键入自己的 C++ 程序,或者使用示例程序之一。 此演练中的示例程序是一个控制台应用程序。 此应用程序使用标准模板库 (STL) 中的 set 容器。 Visual C++ 使用 2003 C++ 标准进行编译,但有以下几点主要例外之处:两阶段名称查找、异常规范和导出。 此外,Visual C++ 支持若干 C++0x 功能,例如,lambda、自动、static_assert、rvalue 引用和 extern 模板。 1. 2. 3. 通过以下方式创建一个项目:指向―文件‖菜单上的―新建‖,然后单击―项目‖。 在―Visual C++‖项目类型窗格中,单击―Win32‖,然后单击―Win32 控制台应用程序‖。 键入项目名称。 默认情况下,包含项目的解决 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 与项目同名,但您可以键入其他名称。 您也可以为项目键入其他位置。 单击―确定‖创建项目。 4. 5. 6. 在―Win32 应用程序向导‖中,单击―下一步‖,选择―空项目‖,然后单击―完成‖。 如果未显示―解决方案资源管理器‖,请在―视图‖菜单上,单击―解决方案资源管理器‖。 将一个新源文件添加到项目,如下所示。 a. b. 在―解决方案资源管理器‖中,右击―源文件‖文件夹,指向―添加‖,然后单击―新建项‖。 在―代码‖节点中单击―C++ 文件(.cpp)‖,为文件键入名称,然后单 击―添加‖。 该 .cpp 文件即显示在―解决方案资源管理器‖中的―源文件‖文件夹中,并且文件将在 Visual Studio 编辑器中打开。 7. 在编辑器内的文件中,键入使用标准 C++ 库的有效 C++ 程序,或者复制示例 程序之一并将其粘贴在文件中。 例如,您可以使用 set::find (STL Samples)示例程序,该程序是帮助中附带的标准模板库示例之一。 如果使用该示例程序,请注意 using namespace std; 指令。 此指令使程序能够 std::endl)。 使用 cout 和 endl,而无需完全限定名(std::cout 和 8. 9. 保存该文件。 在―生成‖菜单上,单击―生成解决方案‖。 ―输出‖窗口显示有关编译过程的信息,例如,生成日志的位置,以及指示生成状态的消息。 10. 在―调试‖菜单上,单击―开始执行(不调试)‖。 如果使用了示例程序,将显示一个命令窗口,其中显示是否在集合中找到了特定的整数。 在命令行上编译本机C++程序 Visual C++ 包括一个 C++ 编译器,可用来创建从基本 Visual C++ 程序到 Windows 窗体应用程序和组件的各种程序。 通过按此演练的过程进行操作,您可以通过使用文本编辑器创建基本的 Visual C++ 程序,然后在命令行上对其进行编译。 也可以编译使用 Visual Studio 集成开发环境 (IDE) 创建的 Visual C++ 程序。 有关更多信息,请参见Walkthrough: Compiling a C++ Program that Targets the CLR in Visual Studio。 您可以使用自己的 Visual C++ 程序,而不是键入下面步骤中所示的程序。 也可以使用其他帮助主题中的任何 Visual C++ 代码示例程序。 系统必备 若要完成本演练,您必须了解 C++ 语言的基础知识。 创建 Visual C++ 源文件并在命令行上对其进行编译 1. 打开―Visual Studio 2010 命令提示‖窗口,方法是单击―开始‖,指向―所 有程序‖、―Microsoft Visual Studio 2010‖、―Visual Studio 工具‖,然后单击―Visual Studio 2010 命令提示‖。 可能需要管理员凭据才能成功编译此演练中的代码,具体情况视计算机的操作系统和配置而定。 若要以管理员身份运行―Visual Studio 2010 命令提示‖窗口,请右击―Visual Studio 2010 命令提示‖,然后单击―以管理员身份运行‖。 2. 3. 复制代码 #include <iostream> int main() { std::cout << "This is a native C++ program." << std::endl; return 0; } 4. 5. ―文件‖菜单上,单击―保存‖。 这样就创建了一个 Visual C++ 源文件。 关 6. 在 闭记事本。 在命令提示符下,键入 cl /EHsc basic.cpp,并按 Enter。 /EHsc 命令行选 项指示编译器启用 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 Studio 2010 命令提示‖窗口,请键入 exit 并按 Enter。 编 Visual C++ 程序 译使用 .NET 类的 下面的步骤演示如何编译使用 .NET Framework 类的 Visual C++ 程序。 在命令提示符下,键入 notepad basic.cpp,并按 Enter。 在系统提示是否创建文件时,单击―是‖。 在记事本中,键入下列各行。 您必须使用 /clr(公共语言运行时编译)编译器选项,因为此程序使用 .NET 类并且必须包括必要的 .NET 库。 Visual C++ 编译器生成的 .exe 文件包含 MSIL 代码,而不是可由计算机执行的指令。 按照本过程中的步骤编译帮助主题中的任何 Visual C++ 示例程序。 在命令行上编译 Visual C++ .NET 控制台应用程序 1. 打开―Visual Studio 2010 命令提示‖窗口,方法是单击―开始‖,指向―所 有程序‖、―Microsoft Visual Studio 2010‖、―Visual Studio 工具‖,然后单击―Visual Studio 2010 命令提示‖。 可能需要管理员凭据才能成功编译此演练中的代码,具体情况视计算机的操作系统和配置而定。 若要以管理员身份运行―Visual Studio 2010 命令提示‖窗口,请右击―Visual Studio 2010 命令提示‖,然后单击―以管理员身份运行‖。 2. 3. 复制代码 int main() { System::Console::WriteLine("This is a Visual C++ program."); } 4. 在―文件‖菜单上,单击―保存‖。 您已经创建了一个使用 .NET 类 (Console) 的 Visual C++ 源文件,该文件位于 System 命名空间。 5. 6. 7. 关闭记事本。 在命令提示符下,键入 cl /clr basicclr.cpp,并按 Enter。 cl.exe 编译器将生成一个名为 basicclr.exe 的可执行程序。 若要查看目录中具有名称 basicclr 以及任何文件扩展名的文件的列表,请键 入 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中编译面向CLR的C++程序 通过使用 Visual Studio 开发环境,您可以创建使用 .NET 类的 Visual C++ 程序,并对它们进行编译。 在命令提示符下,键入 notepad basicclr.cpp,并按 Enter。 在系统提示是否创建文件时,单击―是‖。 在记事本中,键入下列各行。 在本过程中,您可以键入自己的 Visual C++ 程序,也可以使用示例程序之一。 本过程中使用的示例程序创建一个名为 textfile.txt 的文 系统必备 这些主题假定您具备 C++ 语言的基础知识。 在 Visual Studio 中创建新项目并添加新的源文件 1. 2. 3. 创建新项目。 在―文件‖菜单上,指向―新建‖,然后单击―项目‖。 在―Visual C++ 项目类型‖中单击―CLR‖,然后单击―CLR 空项目‖。 键入项目名称。 默认情况下,包含项目的解决方案与新项目同名,当然,您也可以键入其他名称。 如果愿意,您可以为项目输入一个不同的位置。 单击―确定‖创建新项目。 4. 5. 如果―解决方案资源管理器‖不可见,请单击―视图‖菜单上的―解决方案资源管理器‖。 向该项目添加新的源文件: 在解决方案资源管理器中右击―源文件‖文件夹,指向―添加‖并单击―新建项...‖。 单击―C++ 文件(.cpp)‖,在每次生成应用程序时不发出提示,请在单击―确定‖之前选中此对话框上的复选框。 8. 9. 在―调试‖菜单上,单击―开始执行(不调试)‖。 如果您使用的是示例程序,则在运行程序时将显示一个命令窗口,指示已创建 了该文 textfile.txt 文 启动 屏幕的 windows 8,在中,选择 VS2012 1. 打开开发人员命令提示。 在 开 发人员命令提示 平铺。 在早期版本中,选择 启动 按钮,展开 所有程序、Microsoft Visual Studio 2012和 Visual Studio 工具,然后选择 VS2012 开发人员命令提示。 基于 windows 的版本在计算机和系统安全配置中,您可能必须打开 VS2012 开发人员命令提示 的快捷菜单中选择 以管理员身份运行 成功生成和运行按这些步骤创建的应用程序。 2. 在命令提示,请创建源文件的目录并使其成为当前工作目录。 例如,键入 md c:\simple 并按 enter 创建名为 Simple 的目录,然后键入 cd c:\simple 并按 enter 更改到该目录。 在命令提示符处,键入 notepad 并按 enter。 在记事本中,输入以下行。 3. 4. Visual C++ 复制代码 #include <stdio.h> int main() { printf("This is a native C program.\n"); return 0; } 5. 在菜单栏上,依次选择 文件,保存 打开 另存为 对话框。 导航到已创建的保留所有权利。 simple.c Microsoft (r) 增量链接器第 11.00.50727.1 版 copyright (c) Microsoft Corporation。 保留所有权利。 /out:simple.exe simple.obj 8. 9. 若要查看文件列表中工作目录中,键入 dir 并按 enter。 .obj 文件是可忽略的中间格式文件。 若要运行程序,键入其名称,不带文件扩展名 (例如,simple—并按 enter。 程序显示此文本然后退出: This is a native C program. 10. 若要关闭命令提示符窗口,键入 exit 并按 enter。 创建Win32应用程序 本演练演示如何创建基于 Win32 的简单基本应用程序,该应用程序在窗口中显示―Hello, World!‖。 您可以使用在此演练中开发的代码作为创建其他基于 Win32 的应用程序的模式。 Win32 API(也称为 Windows API)是用于创建 Windows 应用程序的基于 C 的框架。 有关 Win32 API 的更多信息,请参见 Windows API。 6. 7. 1. 2. 在―文件‖菜单上,单击―新建‖,然后单击―项目‖。 在―新建项目‖对话框的左侧窗格中,单击―已安装的模板‖,单击―Visual C++‖,然后选择―Win32‖。 在中间窗格中,选择―Win32 项目‖。 在―名称‖框中,键入项目名称,例如 win32app。 单击―确定‖。 3. 4. 5. 在―Win32 应用程序向导‖的―欢迎‖页上,单击‖下一步‖。 在―应用程序设置‖页上的在―应用程序类型‖下,选择―Windows 应用程序‖。 在―附加选项‖下,选择―空项目‖。 单击―完成‖创建项目。 在―解决方案资源管理器‖中,右击 Win32app 项目,单击―添加‖,然后单 击―新建项‖。 在―添加新项‖对话框中选择―C++ 文件(.cpp)‖。 在―名称‖框中,键入文件名称,例如 GT_HelloWorldWin32.cpp。 单击―添加‖。 启动基于 Win32 的应用程序 1. 就像每个 C 应用程序和 C++ 应用程序都以 main 函数作为起点那样,每个基 于 Win32 的应用程序同样必须要有 WinMain 函数。 WinMain 具有以下语法。 复制代码 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow); 有关此函数的参数和返回值的信息,请参见 WinMain 函数。 2. 复制代码 #include <windows.h> #include <stdlib.h> #include <string.h> #include <tchar.h> 由于应用程序代码必须使用现有定义,因此应将 include 语句添加到文件中。 3. 除 WinMain 函数外,每个基于 Win32 的应用程序还必须具有一个窗口过程函 WndProc 具有以下语法。 数。 此函数通常名为 WndProc。 复制代码 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); 此函数处理应用程序从操作系统接收的许多消息。 例如,在具有对话框(该对话框中有一个―确定‖按钮)的应用程序中,如果用户单击该按钮,操作系统就会向该应用程序发送一条消息,告知已单击该按钮。 WndProc 负责响应该事件。 在此示例中,相应的响应可能是关闭该对话框。 有关更多信息,请参见窗口过程。 向 WinMain 函数添加功能 1. 在 WinMain 函数中,创建 WNDCLASSEX 类型的窗口类结构。 此结构包含有关 该窗口的信息,例如,应用程序图标、窗口的背景色、要在标题栏中显示的名称、窗口过程函数的名称等等。 下面的示例演示一个典型 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.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)); 有关此结构的各字段的信息,请参见 WNDCLASSEX。 2. 现在您已经创建一个窗口类,接下来必须将其注册。 使用 RegisterClassEx 函 数,并将窗口类结构作为参数进行传递。 复制代码 if (!RegisterClassEx(&wcex)) { MessageBox(NULL, _T("Call to RegisterClassEx failed!"), _T("Win32 Guided Tour"), NULL); return 1; } 3. 复制代码 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 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); 现在可以创建一个窗口。 使用 CreateWindow 函数。 return 1; } 此函数返回 HWND,它是某个窗口的句柄。 有关更多信息,请参见 Windows 数据类型。 4. 复制代码 // The parameters to ShowWindow explained: // hWnd: the value returned from CreateWindow // nCmdShow: the fourth parameter from WinMain ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); 此时,所显示的窗口不会有太多内容,因为您尚未实现 WndProc 函数。 5. 现在添加一个消息循环以侦听操作系统发送的消息。 如果应用程序收到一条消 息,则此循环会将该消息调度至 WndProc 函数以接受处理。 消息循环类似于下列代码。 复制代码 MSG msg; while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&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_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 函数添加功能 1. 若要启用 WndProc 函数来处理应用程序所收到的消息,请实现 switch 语句。 要处理的第一条消息是 WM_PAINT 消息。 如果必须更新所显示的应用程序窗口的一部分,该应用程序就会收到此消息。 (首次显示该窗口时,必须将其全部更新。) 若要处理 WM_PAINT 消息,请首先调用 BeginPaint,然后处理用于布局该窗口中的文本、按钮和其他控件的所有逻辑,再调用 EndPaint。 对于此应用程序,开始调用和结束调用之间的逻辑会在窗口中显示字符串―Hello, World!‖。 在下列代码中,请注意 TextOut 函数用于显示该字符串。 复制代码 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. 应用程序通常会处理许多其他消息,例如 WM_CREATE 和 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 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. 2. 3. 4. 创建本演练中之前―创建基于 Win32 的项目‖中的基于 Win32 的项目。 复制这些步骤之后的代码,然后将其粘贴到 GT_HelloWorldWin32.cpp 源文件中。 在―生成‖菜单上,单击―生成解决方案‖。 若要运行该应用程序,请按 F5。 包含文本―hello world‖!的窗口应显示在显示的左上角。 代码 复制代码 // GT_HelloWorldWin32.cpp // compile with: /D_UNICODE /DUNICODE /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 included in this code module: LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); 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 does 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; } // // FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM) // // PURPOSE: Processes messages for the main window. // // WM_PAINT - Paint the main window // WM_DESTROY - post a quit message and return // // 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; } 4. 单击―完成‖关闭向导并在开发环境中打开新项目。 创建项目后,可在解决方案资源管理器中查看创建的文件。 有关向导为项目创建的文件的更多信息,请参见项目生成的文件 ReadMe.txt。 有关文件类型的更多信息,请参见为 Visual C++ 项目创建的文件类型。 创建动态链接库 (DLL) 项目 1. 2. 3. 4. 5. 6. 7. 在菜单栏上,选择―文件‖,―新建、―项目‖。 在 新建项目 对话框的左侧窗格中,展开 已安装,模板,Visual C++,然后选择 win32。 在中间窗格中,选择 Win32 控制台应用程序。 为项目指定名称 (例如,MathFuncsDll 在 名称 框。 指定名称解决方案 (如 DynamicLibrary,在 解决方案名称 框。 选择―确定‖按钮。 在 Win32 应用程序向导 对话框的 概述 页上,选择 下一个 按钮。 在 应用程序设置 页上,在 应用程序类型下,选择 dll。 选择 完成 按钮创建项目。 向动态链接库添加类 1. 若要创建新选件类的一个标头文件,在菜单栏上,选择 项目,添加新项。 在 添 加新项 对话框中,在左窗格中,单击 Visual C++下,选择 代码。 在中间窗格中,选择 头文件 (.h)。 为标头指定名称 (此文件,MathFuncsDll.h 然后选择 添加 按钮。 空白标头文件显示。 将以下代码添加到标头文件的开头: Visual C++ 复制代码 // MathFuncsDll.h #ifdef MATHFUNCSDLL_EXPORTS #define MATHFUNCSDLL_API __declspec(dllexport) #else 2. #define MATHFUNCSDLL_API __declspec(dllimport) #endif 3. 添加一个名为" MyMathFuncs "的基本选件类执行常见的算术运算 (如加、减、 乘和除。 代码应类似于: Visual C++ 复制代码 namespace MathFuncs { // This class is exported from the MathFuncsDll.dll class MyMathFuncs { public: // Returns a + b static MATHFUNCSDLL_API double Add(double a, double b); // Returns a - b static MATHFUNCSDLL_API double Subtract(double a, double b); // Returns a * b static MATHFUNCSDLL_API double Multiply(double a, double b); // Returns a / b // Throws const std::invalid_argument& if b is 0 static MATHFUNCSDLL_API double Divide(double a, double b); }; } 当 MATHFUNCSDLL_EXPORTS 定义了该符号,MATHFUNCSDLL_API 符 号将在成员函数声明的 __declspec(dllexport) 修饰符此代码。 此修饰符使函数 由 DLL 导出,以供其他应用程序。 当 MATHFUNCSDLL_EXPORTS 未定义 时,MATHFUNCSDLL_API 定义了成员函数声明的 __declspec(dllimport) 修饰 符。 此修饰符使编译器优化导入函数从 DLL 用于其他应用程序。 默认情况下, 那么,当您的 MathFuncsDll 生成项目时,MATHFUNCSDLL_EXPORTS 定义。 有关更多信息,请参见dllexport, dllimport。 4. 在 解决方案资源管理器的 MathFuncsDll 项目,在 源文件 文件夹中,打 开 MathFuncsDll.cpp。 Visual C++ 5. 在源文件中实现 MyMathFuncs 的功能。 代码应类似于: 复制代码 // MathFuncsDll.cpp : Defines the exported functions for the DLL application. // #include "stdafx.h" #include "MathFuncsDll.h" #include <stdexcept> using namespace std; namespace MathFuncs { double MyMathFuncs::Add(double a, double b) { return a + b; } double MyMathFuncs::Subtract(double a, double b) { return a - b; } double MyMathFuncs::Multiply(double a, double b) { return a * b; } double MyMathFuncs::Divide(double a, double b) { if (b == 0) { throw invalid_argument("b cannot be zero!"); } return a / b; } } 创建引用 DLL 的应用程序 1. 2. 3. 4. 若要创建将引用,并使用 DLL 在菜单栏上,创建的 c. c++ app,选择 文件,新建,项目。 在左窗格中,单击 Visual C++下,选择 win32。 在中间窗格中,选择 Win32 控制台应用程序。 为项目指定名称 (例如," MyExecRefsDll 在 名称 框。 在 解决方案旁边, 选择 添加到解决方案 从下拉列表。 这将新项目添加到包含 DLL 的解决方案。 选择―确定‖按钮。 在 Win32 应用程序向导 对话框的 概述 页上,选择 下一个 按钮。 在 应用程序设置 页上,在 应用程序类型下,选择 控制台应用程序。 在 应用程序设置 页上,在 其他选项下,清除 预编译头 复选框。 选择 完成 按钮创建项目。 5. 6. 7. 8. 使用从选件类库功能。app 1. 2. 在创建一个控件个应用程序后,空程序创建您的。 名称为源文件是否与您先前选择的名称。 在本示例中,名为―MyExecRefsDll.cpp‖。 若要使用在该应用程序在 DLL 创建的算术例程,则必须引用它。 为此,请选 择 MyExecRefsDll 项目在 解决方案资源管理器,然后在菜单栏上,选择 项目,引用。 在 属性页 对话框中,展开 通用属性 节点,选择" 框架和引用,然后选择 添加新引用 按钮。 有关―引用‖对话框的更多信息,请参见―<Projectname> 属性页‖对话框 ->―通用属性‖->―框架和引用‖。 添加引用 对话框中可以引用的库。 它们包含的 项目 选项卡列出了当前解决 方案中的项目和所有库。 在 项目 选项,请在 MathFuncsDll 旁边的复选框, 然后选择 确定 按钮。 若要引用 DLL 的标头文件,必须修改包含的目录路径。 为此,请在 属性页 对话框中,展开 配置属性 节点,展开 C/C++ 节点,然后选择 常规。 在 附 加包含目录旁边,请指定 MathFuncsDll.h 标头文件位置的路径。 您可以使用一 个相对路径 (例如,。\ MathFuncsDll\—然后选择 确定 按钮。 现在即可在此应用程序中使用 MyMathFuncs 类。 使用以下代码替换3. 4. 5. ―MyExecRefsDll.cpp‖的Visual C++ 复制代码 // MyExecRefsDll.cpp // compile with: /EHsc /link MathFuncsDll.lib #include <iostream> #include "MathFuncsDll.h" using namespace std; int main() { double a = 7.4; int b = 99; cout << "a + b = " << MathFuncs::MyMathFuncs::Add(a, b) << endl; cout << "a - b = " << MathFuncs::MyMathFuncs::Subtract(a, b) << endl; cout << "a * b = " << MathFuncs::MyMathFuncs::Multiply(a, b) << endl; cout << "a / b = " << MathFuncs::MyMathFuncs::Divide(a, b) << endl; try { cout << "a / 0 = " << MathFuncs::MyMathFuncs::Divide(a, 0) << endl; } catch (const invalid_argument &e) { cout << "Caught exception: " << e.what() << endl; } return 0; } 6. 通过选择 生成生成可执行文件,在菜单栏上 生成解决方案。 运行应用程序 1. 2. 3. 确保选择" MyExecRefsDll "作为默认值项。 在 解决方案资源管理器,选择" MyExecRefsDll,然后在菜单栏上,选择 项目,设为启动项目。 若要运行项目,在菜单栏上,选择 调试,开始执行 (不调试)。 输出应该与下 b = -91.6 * 732.6 = a b/b = 0.0747475 捕获异常:b 不 面的+ b = 106.4 a 到 能为零~ 后续步骤 创建类库 1. 2. 3. 在―文件‖菜单上单击―新建‖,再单击―项目‖ 。 此时将出现―新建项目‖对话框。 在左侧的―已安装的模板‖部分中,单击―Visual C++‖节点。 在可用模板的列表中,单击―类库‖图标。 在―名称‖框中为应用程序键入唯一的名称。
本文档为【全新 Microsoft Visual Studio2013指南】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_977556
暂无简介~
格式:doc
大小:77KB
软件:Word
页数:36
分类:工学
上传时间:2018-05-01
浏览量:40