




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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公共语言运行时(CLR)的开发和
2、开发。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应用商店a
3、pps和元素的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的win
4、dows版本使用基于 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位应用程序。
5、在C+的Win32应 用程序可以使用C运行时(crt)和标准模板库(STL)选件类和函数,COM对象和任 何公共函数,公共称为 windows API。有关 Win32 apps 介绍在C+中,请参见 了 解到窗口的程序在 C+。 Win 32应用程序是一种创建窗口的本机桌面应用程序;另一种方法是MFC应用程序。 MFC是企业类型的阿普斯特殊的默认值选择阿普斯具有许多用户界面控件或自定义用 户控件。MFC用于序列化、文本处理、打印和当今用户界面元素提供方便的帮助器类 选件例如功能区上。这些选件类对Win32应用程序不可用。若要创建MFC或ATL程 序需要 Microsoft Visual St
6、udio Professional 2012或更高版本。 Visual Studio Express 2012 for Windows Desktop不包括 MFC 或 ATL 支持。 创建标准C+g序 在Visual Studio 集成开发环境(IDE) 可以使用Visual C+ 创建标准C+程序。 通过采用此演练中的步骤,您可以创建一个项目,向该项目添加一个新文件,修改该文 件以添加C+代码,然后使用 Visual Studio编译并运行程序。 您可以键入自己的 C+程序,或者使用示例程序之一。此演练中的示例程序是一个控 制台应用程序。此应用程序使用标准模板库(STL)中的set容器。
7、Visual C+ 使用2003 C+标准进行编译,但有以下几点主要例外之处:两阶段名称 查找、异常规和导出。此外,Visual C+ 支持若干C+0 x功能,例如,lambda、自 动、static_assert 、rvalue 弓丨用禾口 extern 模板。 说明 如果要求符合标准,请使用 /Za编译器选项来禁用对该标准的Microsoft 扩展。 有关更多信息,请参见亿a、/Ze (禁用语言扩展)。 系统必备 若要完成本演练,您必须了解C+语言的基础知识。 创建项目并添加源文件 1. 通过以下方式创建一个项目:指向“文件”菜单上的“新建”,然后单击“项 目”。 2. 在“ Visual
8、 C+项目类型窗格中,单击“ Win 3,然后单击“ Win32控制台 应用程序。 3. 键入项目名称。 默认情况下,包含项目的解决方案与项目同名,但您可以键入其他名称。您也可 以为项目键入其他位置。 单击“确定”创建项目。 4. 在“Win32应用程序向导”中,单击“下一步”,选择“空项目”,然后单击 完成”。 5. 如果未显示“解决方案资源管理器”,请在“视图”菜单上,单击“解决方案 资源管理器”。 6. 将一个新源文件添加到项目,如下所示。 a. 在“解决方案资源管理器”中,右击“源文件”文件夹,指向“添加”, 然后单击“新建项”。 b. 在“代码”节点中单击“C+文件(.cpp) ”
9、,为文件键入名称,然后单 击添加。 该.cpp文件即显示在“解决方案资源管理器”中的“源文件”文件夹中,并且 文件将在Visual Studio编辑器中打开。 7. 在编辑器的文件中,键入使用标准C+库的有效C+程序,或者复制示例程 序之一并将其粘贴在文件中。 例如,您可以使用 set:fi nd (STL Samples)示例程序,该程序是帮助中附带的 标准模板库示例之一。 如果使用该示例程序,请注意using namespace std; 指令。此指令使程序能够 使用cout和endl,而无需完全限定名(std:cout 和std:endl )。 8. 保存该文件。 9. 在“生成”菜单上
10、,单击“生成解决方案”。 “输出”窗口显示有关编译过程的信息,例如,生成日志的位置,以及指示生成 状态的消息。 10. 在“调试”菜单上,单击“开始执行(不调试)”。 如果使用了示例程序,将显示一个命令窗口,其中显示是否在集合中找到了特定 的整数。 在命令行上编译本机 C+程序 Visual C+包括一个C+编译器,可用来创建从基本 Visual C+程序到 Windows窗 体应用程序和组件的各种程序。 通过按此演练的过程进行操作,您可以通过使用文本编辑器创建基本的Visual C+程 序,然后在命令行上对其进行编译。 也可以编译使用 Visual Studio 集成开发环境(IDE) 创建
11、的Visual C+ 程序。 有 关更多信息,请参见 Walkthrough: Compiling a C+ Program that Targets the CLRin Visual Studio 。 您可以使用自己的 Visual C+程序,而不是键入下面步骤中所示的程序。也可以使 用其他帮助主题中的任何 Visual C+ 代码示例程序。 系统必备 若要完成本演练,您必须了解C+语言的基础知识。 创建Visual C+ 源文件并在命令行上对其进行编译 1. 打开“Visual Studio 2010命令提示” 窗口,方法是单击 “开始”,指向“所 有程序、“ Microsoft Visu
12、al Studio 2010”、“ Visual Studio 工具,然 后单击“Visual Studio 2010命令提示”。 可能需要管理员凭据才能成功编译此演练中的代码,具体情况视计算机的操作系 统和配置而定。若要以管理员身份运行“ Visual Studio 2010命令提示” 窗口, 请右击 Visual Studio 2010 命令提示,然后单击以管理员身份运行。 2. 在命令提示符下,键入notepad basic.cpp ,并按 Enter。 在系统提示是否创建文件时,单击“是”。 3. 在记事本中,键入下列各行。 复制代码 #in elude viostream int m
13、ai n() std:cout 单击“ C+文件(.cpp) ”,键入一个文件名,然后单击“添加”。 该.cpp文件即显示在“解决方案资源管理器”中的“源文件”文件夹中,并且, 在键入要包含在该文件中的代码的位置,出现一个选项卡式窗口。 6. 在Visual Studio中,在新创建的选项卡中单击并键入有效的Visual C+ 程 序,或者复制并粘贴示例程序之一。 例如,您可以使用 如何:编与文本文件(C+/CLI)示例程序(位于 编程指南 中的“文件处理和I/O ”节点)。 如果要使用示例程序,通知您使用gcnew关键子而不是 new,在创建.NET对象, 并且,时gcnew返回句柄(A)而
14、不是指针(*): StreamWriterA sw = gcnew StreamWriter(fileName); 有关新Visual C+语法的更多信息,请参见适用于运行时平台的组件扩展。 7. 在“生成”菜单上,单击“生成解决方案”。 “输出”窗口显示有关编译过程的信息,如生成日志的位置,以及指示生成状态 的消息。 如果进行了更改,并在未执行生成的情况下运行该程序,则对话框可能指示该项 目已过期。如果要让Visual Studio始终使用文件的当前版本,并且在每次生 成应用程序时不发出提示,请在单击“确定”之前选中此对话框上的复选框。 8. 9. 在“调试”菜单上,单击“开始执行(不调试)
15、”。 如果您使用的是示例程序,则在运行程序时将显示一个命令窗口,指示已创建 了该文本文件。按任意键,关闭该命令窗口。 textfile.txt文本文件现在位于您的项目目录中。您可以使用记事本打开此文 件。 说明 选择空CLR项目模板会自动设置 /clr 编译器选项。 若要验证这一点,请在 “解 决方案资源管理器”中右击该项目,再单击“属性”,然后选中“配置属性”的“常 规”节点中的“公共语言运行时支持” 选项。 编译C程序 Visual Studio包括可用来创建从基本基本的 C程序到windows API应用程序的c. 编译器。 此演练演示如何使用文本编辑器创建一个基本的C程序,然后在命令行
16、上对其进行编 译。 您可以使用自己的 C程序,而不是键入此演练中所示的示例程序。也可以使用帮助主 题中包含的任何 C代码示例程序。 默认情况下,Visual C+编译器将以.c结尾的所有文件视为 C源代码,将以.cpp结 尾的所有文件视为 C+源代码。若要强制编译器将所有文件视为C (而不管文件扩展 名如何),请使用/Tc编译器选项。 系统必备 您必须了解C语言的基础知识。 创建C源文件并在命令行上对其进行编译 1. 打开开发人员命令提示。在 启动 屏幕的windows 8,在中,选择 VS2012开 发人员命令提示 平铺。在早期版本中,选择 启动 按钮,展开 所有程序、 Microsoft
17、Visual Studio 2012和 Visual Studio工具,然后选择 VS2012 开 发人员命令提示。 基于windows的版本在计算机和系统安全配置中,您可能必须打开VS2012开发 人员命令提示的快捷菜单中选择以管理员身份运行成功生成和运行按这些步 骤创建的应用程序。 说明 VS2012开发人员命令提示 自动设置C编译器和所需的任何库的正确路径。应使 用它而不是使用普通的“命令提示符”窗口。有关更多信息,请参见 为命令行生成 设置路径和环境变量。 2. 在命令提示,请创建源文件的目录并使其成为当前工作目录。 例如,键入 md c:simple 并按enter 创建名为Simp
18、le 的目录,然后键入 cd c:simple 并按 en ter 更改到该目录。 3. 在命令提示符处,键入notepad 并按enter。 4. 在记事本中,输入以下行。 Visual C+ 复制代码 #in elude int main() printf( This is a n ative C program. n); return 0; 5. 在菜单栏上,依次选择 文件,保存 打开 另存为 对话框。导航到已创建的容。 在文件名框中,输入一个名称为源文件(例如,simple.c 和中的保存类型然 后在下拉列表中,选择所有文件(*.*)。选择保存按钮创建c.源文件在您 的工作目录。 6.
19、 关闭记事本。 7. 在命令提示,请与您的源一起的名称指定cl命令文件(例如,cl simple.c 并按en ter生成程序。cl.exe编译器将生成将源文件的名称的可执行程序,但 是,有一个.exe 文件名扩展名(例如,Simple.exe。 您可以在编译器显示的多行输出信息中看到可执行程序的名称。 Output x86 copyright (c) Microsoft Corporation的 Microsoft (r) C/C+编译器优 化第17.00.50727.1 版。 保留所有权利。 simple.c Microsoft (r)增量器 第 11.00.50727.1 版 copyr
20、ight (c) Microsoft Corporation。 保留所有权利。 /out:simple.exe simple.obj 8. 若要查看文件列表中工作目录中,键入dir并按enter。 .obj文件是可忽略的中间格式文件。 9. 若要运行程序,键入其名称,不带文件扩展名(例如,simple 并按enter。 程序显示此文本然后退出: This is a n ative C program. 10. 若要关闭命令提示符窗口,键入exit并按enter。 创建Win32应用程序 本演练演示如何创建基于Win32的简单基本应用程序,该应用程序在窗口中显示 “Hello, World!”。
21、您可以使用在此演练中开发的代码作为创建其他基于Win32的 应用程序的模式。 Win32 API (也称为 Windows API)是用于创建 Windows应用程序的基于 C的框架。 有 关 Win32 API的更多信息,请参见Win dows API。 重要事项 为了可以更加清楚地说明本文档各步骤中的特定代码段,我们可能会省略一个有效 系统必备 若要完成本演练,您必须了解C+语言的基础知识。 有关视频演示,请参见 Visual Studio 2008 文档中的 Video Howto: Creating Win32 Applications (C+) (视频帮助:创建 Win32 应用程序
22、(C+)。 创建基于Win32的项目 1. 在“文件”菜单上,单击“新建”,然后单击“项目”。 2. 在“新建项目”对话框的左侧窗格中,单击“已安装的模板”,单击“Visual C+ ,然后选择“Win3 。在中间窗格中,选择 “Win32项目”。 在名称”框中,键入项目名称,例如 win32app。单击确定”。 3. 在“Win32应用程序向导”的“欢迎”页上,单击 “下一步”。 4. 在“应用程序设置”页上的在“应用程序类型”下,选择“Windows应用程 序”。在“附加选项”下,选择“空项目”。单击“完成”创建项目。 5. 在“解决方案资源管理器”中,右击 Win32app项目,单击“添
23、加”,然后单 击“新建项”。在“添加新项”对话框中选择“C+文件(.cpp) ” 。在“名称” 框中,键入文件名称,例如GT_HelloWorldWin32.cpp。 单击“添加”。 启动基于Win32的应用程序 1. 就像每个C应用程序和C+应用程序都以 main函数作为起点那样,每个基 于Win32的应用程序同样必须要有WinMain函数。WinMain具有以下语法。 复制代码 int WINAPI WinM ai n( HINSTANCE hl nsta nee. HINSTANCE hPrevI nsta nee, LPSTR lpCmdLi ne, int n CmdShow); 有
24、关此函数的参数和返回值的信息,请参见 WinMain 函数。 2.由于应用程序代码必须使用现有定义,因此应将 in clude语句添加到文件中。 复制代码 #i nclude vwin dows.h #in clude #in clude vstri ng.h #in clude 3. 除 WinMain函数外,每个基于 Win32的应用程序还必须具有一个窗口过程函 数。此函数通常名为 WndProa WndProc具有以下语法。 复制代码 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); 此函数处理应用程序从操作系统接收的许多消息。例
25、如,在具有对话框(该对话 框中有一个“确定”按钮)的应用程序中,如果用户单击该按钮,操作系统就会 向该应用程序发送一条消息,告知已单击该按钮。WndProc负责响应该事件。在 此示例中,相应的响应可能是关闭该对话框。 有关更多信息,请参见 窗口过程。 向WinMain函数添加功能 1. 在 WinMain函数中,创建 WNDCLASSE类型的窗口类结构。此结构包含有关 该窗口的信息,例如,应用程序图标、窗口的背景色、要在标题栏中显示的名称、 窗口过程函数的名称等等。下面的示例演示一个典型WNDCLASSE结构。 复制代码 WNDCLASSEX wcex; wcex.cbSize = sizeo
26、f(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, MAKEINTRESOURCE(IDI_APPLICATION); wcex.hCursor = LoadCursor(NULL, IDC_ARROW); wcex.hbrBackgrou nd = (HBRUSH)(
27、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); 有关此结构的各字段的信息,请参见WNDCLASSEX 2.现在您已经创建一个窗口类,接下来必须将其注册。使用RegisterCIassEx 函 数,并将窗口类结构作为参数进行传递。 复制代码 if (!RegisterClassEx( return 1; 3.现在可以创建一个
28、窗口。使用CreateWindow函数。 复制代码 static TCHAR szWi ndowClass = _T(wi n32app); static TCHAR szTitle = _T(Wi n32 Guided Tour Applicatio n); / 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: t
29、he type of wi ndow to create / CW_USEDEFAULT, CW_USEDEFAULT: in itial position (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 WinM ai n / NULL: not used in this applicati
30、 on HWND 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 failed!), _T(Wi n32 Guided Tour), NULL); return 1; 此函数返回HWND它是某个窗口的句柄。有关更多信息,请参见Windows数据 类型。 4.
31、现在,使用下列代码来显示窗口。 复制代码 / The parameters to ShowWi ndow expla in ed: / hWnd: the value returned from CreateWi ndow / n CmdShow: the fourth parameter from WinM ai n ShowWi ndow(hWnd, n CmdShow); UpdateWi ndow(hWnd); WndProc 函数。 此时,所显示的窗口不会有太多容,因为您尚未实现 如果应用程序收到一条消 5. 现在添加一个消息循环以侦听操作系统发送的消息。 息,则此循环会将该消息调度
32、至WndProc函数以接受处理。消息循环类似于下 列代码。 复制代码 MSG msg; while (GetMessage( DispatchMessage( return (int) msg.wParam; 有关消息循环中各结构和函数的更多信息,请参见MSG GetMessage TranslateMessage 禾口 DispatchMessage。 此时,WinMain函数应与下列代码类似。 复制代码 int WINAPI WinM ai n( HINSTANCE hI nsta nee, HINSTANCE hPrevI nsta nee, LPSTR lpCmdLi ne, int
33、nCmdShow) 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= Loadlc on(hln sta nee, MAKEINTRESOURCE(IDI_APPLICATION); wcex.hCursor = LoadCursor(NUL
34、L, IDC_ARROW); wcex.hbrBackgrou nd = (HBRUSH)(COLOR_WINDOW+1); wcex.lpszMe nuName = NULL; wcex .l pszClassName = szWi ndowClass; wcex.hIc onSm= LoadIc on( wcex.h In sta nee, MAKEINTRESOURCE(IDI_APPLICATION); if (!RegisterClassEx( return 1; hlnst = hln sta nee; / Store in sta nee han dle in our globa
35、l 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_USEDEFAULT, CW_USEDEFAULT: in itial positio n (x, y) / 500, 100: in itial size (width,
36、 le ngth) / NULL: the pare nt of this win dow / NULL: this applicati on dows not have a menu bar / hln sta nee: the first parameter from WinM ai n / NULL: not used in this applicati on HWND hWnd = CreateWi ndow( szWi ndowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 500, 100, NU
37、LL, 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 WinM ain ShowWi ndow(hWnd, n CmdSho
38、w); UpdateWi ndow(hWnd); / Main message loop: MSG msg; while (GetMessage( DispatchMessage( return (int) msg.wParam; 向WndProc函数添加功能 1. 右要启用 WndProc函数来处理应用程序所收到的消息,请头现switch 语句。 要处理的第一条消息是WM PAINT消息。如果必须更新所显示的应用程序窗口的 一部分,该应用程序就会收到此消息。(首次显示该窗口时,必须将其全部更新。) 若要处理 WM PAINT消息,请首先调用 BeginPaint,然后处理用于布局该窗口中 的
39、文本、按钮和其他控件的所有逻辑,再调用EndPaint。对于此应用程序,开 始调用和结束调用之间的逻辑会在窗口中显示字符串“Hello, World! ”。在下 列代码中,请注意 TextOut函数用于显示该字符串。 复制代码 PAINTSTRUCT ps; HDC hdc; TCHAR greeti ng = _T(Hello, World!); switch (message) case WM_PAINT: hdc = Begi nPai nt(hW nd, / Here your application is laid out. / For this in troduct ion, we
40、 just print out Hello, World! / in the top left corner. TextOut(hdc, 5, 5, greeti ng, _tcsle n( greet in g); / End applicati on-specific layout sect ion. En dPai nt(hWnd, break; 2.应用程序通常会处理许多其他消息,例如WM CREAT和 WM DESTRQY下列代 码展示了一个基本但完整的WndProc函数。 复制代码 LRESULT CALLBACK WndProc(HWND hWnd, UINT message,
41、WPARAM wParam, LPARAM lParam) PAINTSTRUCT ps; HDC hdc; TCHAR greet in g = _T(Hello, World!); switch (message) case WM_PAINT: hdc = Begi nPai nt(hW nd, / 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
42、ng, _tcsle n( greet in g); / End applicati on specific layout sect ion. En dPai nt(hW nd, break; case WM_DESTROY: PostQuitMessage(O); break; default: return DefWi ndowProc(hW nd, message, wParam, lParam); break; return 0; 示例 生成此示例 1. 创建本演练中之前“创建基于Win32的项目”中的基于 Win32的项目。 2. 复制这些步骤之后的代码,然后将其粘贴到GT_Hell
43、oWorldWi n32.cpp 源文件 中。 3. 在“生成”菜单上,单击“生成解决方案”。 4. 若要运行该应用程序,请按F5。包含文本“ hello world ”!的窗口应显示在 显示的左上角。 代码 复制代码 / 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 cla
44、ss n ame. static TCHAR szWi ndowClass = _T(wi n32app); / The string that appears in the applications 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, WPA
45、RAM, LPARAM); int WINAPI WinM ai n( HINSTANCE hln sta nee, HINSTANCE hPrevI nsta nee, LPSTR lpCmdLi ne, 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 = hl
46、n sta nee; wcex.hIc on= LoadIc on(hln sta nee, MAKEINTRESOURCE(IDI_APPLICATION); wcex.hCursor = LoadCursor(NULL, 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
47、(IDI_APPLICATION); if (!RegisterClassEx( 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 o
48、f 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 on does not have a menu bar / hln sta nee: the first parameter from WinMain / NULL: not used in this applicati on HWND h
49、Wnd = 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 failed!), _T(Wi n32 Guided Tour), NULL); return 1; / The parameters to ShowWi ndow expla in ed: / hWnd: the
50、 value returned from CreateWi ndow / n CmdShow: the fourth parameter from WinMain ShowWi ndow(hWnd, n CmdShow); UpdateWi ndow(hWnd); / Main message loop: MSG msg; while (GetMessage( DispatehMessage( return (int) msg.wParam; / / FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM) / / PURPOSE: Processes mes
51、sages for the mai n wi ndow. / / WM_PAINT - Paint the main wi ndow / WM_DESTROY - post a quit message and return / / LRESULTCALLBACWndProc(HWNDW nd, UINT message, WPARAMParam, LPARAMParam) PAINTSTRUCT ps; HDC hdc; TCHAR greet in g = _T(Hello, World!); switch (message) case WM_PAINT: hdc = Begi nPai
52、nt(hW nd, / Here your application is laid out. / For this in troducti on, we just pri nt out Hello, World! / in the top left corner. TextOut(hdc, 5, 5, greeti ng, _tcsle n( greet in g); / End applicati on-specific layout secti on. En dPai nt(hW nd, break; case WM_DESTROY: PostQuitMessage(O); break;
53、default: return DefWi ndowProc(hW nd, message, wParam, lParam); break; return 0; 创建MFC应用程序 1. 按照帮助主题用Visual C+ 应用程序向导创建项目 中的说明进行操作。 2. 在“新建项目”对话框中,选择“模板”窗格中的“MFC应用程序”打开向导 3. 使用MFC应用程序向导 定义应用程序设置。 4.单击“完成”关闭向导并在开发环境中打开新项目 创建项目后,可在 解决方案资源管理器 中查看创建的文件。 有关向导为项目创建的文 件的更多信息,请参见项目生成的文件 ReadMe.txt。有关文件类型的更多
54、信息,请参 见为Visual C+ 项目创建的文件类型。 创建动态库(DLL)项目 1. 在菜单栏上,选择 “文件”,“新建、“项目”。 2. 在新建项目 对话框的左侧窗格中,展开已安装,模板,Visual C+,然后选 择 Win32。 3. 在中间窗格中,选择 Win32控制台应用程序。 4. 为项目指定名称(例如,MathFuncsDII在名称框。指定名称解决方案(如 DynamicLibrary,在解决方案名称框。选择确定”按钮。 5. 在 Win32应用程序向导 对话框的 概述 页上,选择 下一个 按钮。 6. 在应用程序设置 页上,在应用程序类型下,选择dll。 7. 选择完成按钮
55、创建项目。 向动态库添加类 1. 若要创建新选件类的一个标头文件,在菜单栏上,选择项目,添加新项。在添 加新项 对话框中,在左窗格中,单击Visual C+讣,选择 代码。在中间窗格中, 选择头文件(.h)。为标头指定名称(此文件,MathFuncsDII.h 然后选择添加按 钮。空白标头文件显示。 2. 将以下代码添加到标头文件的开头: Visual C+ 复制代码 / MathFu ncsDII.h #ifdef MATHFUNCSDLL_EXPORTS #defi ne MATHFUNCSDLL_API _declspec(dllexport) #else #define MATHFUN
56、CSDLL_API _declspec(dllimport) #en dif 3.添加一个名为MyMathFuncs 的基本选件类执行常见的算术运算(如加、减、 乘和除。代码应类似于: 说明 如果生成命令行上的 DLL项目,请使用/D 编译器选项定义 MATHFUNCSDLL_EXPOR符号。 4. 在解决方案资源管理器 的MathFuncsDIl项目,在 源文件文件夹中,打开 MathFuncsDII.cpp。 5. 在源文件中实现 MyMathFuncs的功能。代码应类似于: Visual C+ 复制代码 / MathFuncsDII.cpp: Defines the exported f
57、unctions for the DLL application. / #i nclude stdafx.h #in clude MathFu ncsDII.h #in clude using namespacestd; n amespace MathF uncs double MyMathFu ncs:Add(double a, double b) return a + b; double MyMathFu ncs:Subtract(double a, double b) return a - b; double MyMathFuncs:MuItipIy(doubIe a, double b) return a * b; double MyMathFuncs:Divide(doubIe a, double b) if (b = 0) throw in valid_argume nt(b cannot be zero! ); return a / b; 6. 通过选择 生成生成动态库,在菜单栏上的生成解决方案。 说明 如果您使用不显示一个 生成菜单上,在菜单栏上的一个学习版,选择工具,设 置,专家设置启用它,然后选择 生成,生成解决方案
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农业综合开发项目可行性研究报告(范文模板)
- 挖除垃圾施工方案
- 七年级人教版上册第三单元 第一课 家住平原教学设计
- 植被移栽施工方案
- 丽水2025年龙泉市部分事业单位招聘28人笔试历年参考题库附带答案详解
- 运输合同书范例汇编二零二五年
- 临沧云南临沧市临翔区林业和草原局招聘大学生生态护林员笔试历年参考题库附带答案详解
- 场地及机房租用协议书
- 全国普通高校毕业生聘用合同书
- 二零二五版购买房产垫资借款协议合同书范例
- 幼儿园游戏活动评价
- (正式版)SHT 3075-2024 石油化工钢制压力容器材料选用规范
- 机器人发展史课件完整版
- 《城市市政管网运行安全风险评估规程》
- 2024年中国诗词大会知识竞赛模拟题库及答案(120题)
- 新车入户代办委托书
- 可乐罐罐身主要成分的探究
- 麻醉复苏室护理进修汇报
- 医疗用毒性药品培训课件
- 政府与非营利组织会计(王彦第8版)习题及答案 第1-23章 政府会计的基本概念-政府单位会计报表
- 2024版机动车鉴定评估师必备考试复习题库(含答案)
评论
0/150
提交评论