Visual C++ 示例

Visual C++ 示例阐释了跨多种技术的各种功能。

安全说明安全说明

此代码示例旨在阐释一个概念,并且仅显示与此概念相关的代码。该代码可能不符合特定环境的安全要求,因此不应原样搬用所显示的代码。我们建议您添加安全性代码和错误处理代码,以使项目更加安全可靠。Microsoft“按原样”提供此代码示例,不做任何保证。

警告

某些示例尚未经过修改以反映 Visual C++ 向导、库和编译器中的变更。然而,它们仍然能演示如何完成相应任务。

查看示例联机

  1. 在 Visual Studio 中,选择 帮助示例

  2. 示例 对话框的左窗格中,在 Windows 8运行的示例选择 示例、然后 Visual C++,然后在 Windows 8 或早期版本的 windows 上运行的桌面示例的其他类别 Windows 运行时 ,或者之一。

还可以访问 MSDN 代码库 从任何浏览器。

生成并运行示例

  1. 在 Visual Studio 中打开解决方案。

  2. 生成 菜单中,选择 生成

  3. 调试 菜单中,选择 开始执行 (不调试)

有关 Visual C++ 桌面示例的最新版本,请参见 MSDN 网站上的以下页面之一。 如果打开从 Visual Studio 的早期版本的项目在 Microsoft Visual Studio 2012 中的 Visual C++的,该项目为您要升级。 代码库还可以包含此处未列出的 C++ 示例。

所有 Visual C++ 示例

ATL 示例

ATL 示例(使用特性)

CLR 示例

编译器示例

ComTypeLibfor7 示例

CRT 示例

调试示例

事件处理示例

可扩展性示例

合成示例

国际示例

语言示例

MFC 示例

操作系统示例

STL 示例

Unix 示例

示例说明

Ee837238.collapse_all(zh-cn,VS.110).gifATL 示例 - 高级

示例名称

描述

ActiveDoc

说明如何实现活动文档服务器 (Active Document Server)。

Async

从 URL 异步下载数据。

ATLButton

创建一个根据自身的状态用三种不同的位图显示自身的按钮。

ATLDuck

说明如何与 ATL 控件一起使用连接点。

ATLSecurity

说明如何使用 ATL 安全类来检查安全设置。

ATLTraceTool

显示由 ATLTRACE2 宏生成的输出。

连接

演示了如何在多线程环境中实现和使用连接点(IConnectionPointContainer 和 IConnectionPoint 接口)。

CThreadPool

说明如何在应用程序中使用线程池,以及实现线程池可以如何提高应用程序的性能。

DCOM

演示如何从运行于不同计算机上的多个客户端调用在 Windows 服务中实现的 COM 对象。

MFCATL

阐释如何能在 MFC 服务器 EXE 中使用 ATL COM 对象。

Ee837238.collapse_all(zh-cn,VS.110).gifATL 示例 - 控件

示例名称

描述

ATLFire

说明如何用 ATL 生成有窗口控件。

CDInfo

播放 CD 乐曲并在工具提示和饼图显示中显示有关这些曲目的信息。

Circ

创建一个说明属性页并绘制圆形的控件。

Polygon

生成一个实现自定义属性、事件、属性页和对象安全的控件。

SubEdit

创建一个具有超类的 Windows 控件。

Ee837238.collapse_all(zh-cn,VS.110).gifATL 示例 - 常规

示例名称

描述

ATLCollections

演示 ICollectionOnSTLImpl 和 CComEnumOnSTL 的使用及自定义复制策略类的实现。

ATLCon

说明简单的控件容器。

ATLSafeArray

说明如何使用 CComSafeArray 来创建和维护 SAFEARRAY;还说明如何将 SAFEARRAY 从组件传递到脚本。

AutoThread

演示使用 CComAutoThreadModule 类。

Beeper

实现 tearoff 接口 — BSTR 的集合/枚举。

CircColl

使用 ATL 和标准 C++ 库实现对象的集合/枚举。

COMMap

演示带有编译器 COM 支持的 COM 接口映射项宏。

CustomString

说明如何使用 CStringT 的自定义内存分配器来提高多线程应用程序的性能。

DispSink

说明如何在调度接口上使用连接点。

Ee837238.collapse_all(zh-cn,VS.110).gifATL 示例 - OLEDB - 使用方

示例名称

描述

CatDB

显示 OLE DB 提供程序的架构信息,如表和列。

DBViewer

演示一个中级应用程序,它依赖 CManualAccessor 类来完全控制应用程序的数据绑定。

DynamicConsumer

说明如何使用动态访问器和架构行集合类从数据库中读取元数据。

MultiRead

使用多个线程读取数据库中的表。

Ee837238.collapse_all(zh-cn,VS.110).gifATL 示例 - OLEDB - 提供方

示例名称

描述

AdvancedPV

实现可更新的 OLE DB 提供程序。 演示一些高级技术。

UpdatePV

实现可更新(读/写)的 OLE DB 提供程序。

Ee837238.collapse_all(zh-cn,VS.110).gifCLR 示例 - Windows 窗体

示例名称

描述

Scribble (MFC)

Scribble 示例的 MFC 实现,已被更新和扩展,加入了新的 .NET 功能。

Scribble(Windows 窗体)

Scribble 示例的 Windows 窗体实现,进行了更新和扩展以包括新的 .NET 功能。

STLCLR

演示一些可在使用 STL/CLR 库时使用的功能。

Ee837238.collapse_all(zh-cn,VS.110).gifComTypeLibfor7 示例

示例名称

描述

ACDual

向自动化应用程序添加双重接口

ADOSamp

实现三层客户端/服务器应用程序。

AllInOne

使用 ATL 实现一个服务器,它公开 STL 集合,且由 MFC 应用程序中的编译器 COM 支持控制。

COMMap

演示带有编译器 COM 支持的 COM 接口映射项宏。

连接

演示了如何在多线程环境中使用和实现连接点(IConnectionPointContainer 和 IConnectionPoint 接口)。

DCOM

演示如何从运行于不同计算机上的多个客户端调用在 Windows 服务中实现的 COM 对象。

FreeThrd

演示带有编译器 COM 支持的多线程客户端和自由线程服务器。

InProc

演示带有编译器 COM 支持的进程内自动化服务器应用程序。

Labrador

实现一个没有任何用户接口的 EXE 服务器。

MFCCalc

演示带有编译器 COM 支持的自动化服务器应用程序。

Ee837238.collapse_all(zh-cn,VS.110).gif编译器示例 - 常规

示例名称

描述

ccWrapper

演示如何将 C/C++ 编译器标志从其他编译器映射到 Visual C++ 编译器 (cl.exe) 中。

Ee837238.collapse_all(zh-cn,VS.110).gif编译器示例 - MASM

示例名称

描述

EuclidStep1

纯 C 项目,它说明用于查找最大公约数的欧几里得算法。

EuclidStep2

EuclidStep1 的扩展,它是混合 C 和 ASM 项目。 欧几里得算法的核心从 .c 文件移到 .asm 文件,并且 .c 文件调入 .asm 文件。

PrimesStep1

纯 C 项目,它说明用于查找质数的埃拉托色尼斯筛法。

PrimesStep2

PrimesStep1 的扩展,它是混合 C 和 ASM 项目,并且将核心算法移到 .asm 文件。

PrimesStep3

PrimesStep2 的扩展,它添加一个 C 头文件和一个 .asm 包含文件,分别用来声明外部函数和全局数据结构。

Ee837238.collapse_all(zh-cn,VS.110).gifCRT 示例

示例名称

描述

CPUID

确定正在运行的 CPU 的性能。

CRT_Dbg1

阐释 C 运行库的基本调试功能。

CRT_Dbg2

说明 C 运行时调试挂钩函数。

DFACObjs

演示如何使用 _CrtDoForAllClientObjects C 运行时函数来循环访问客户端对象的链接列表。

报告

阐释 C 运行时调试报告函数。

RTC

演示运行时错误检查功能。

SecureCRT

本示例演示了如何升级原本使用已被否决的 CRT 函数的代码,以提高代码安全性。

Ee837238.collapse_all(zh-cn,VS.110).gif调试示例

示例名称

描述

EEAddIn

使用“表达式计算器外接程序 API”来扩展本机调试器表达式计算器。

Ee837238.collapse_all(zh-cn,VS.110).gif事件示例

示例名称

描述

COMEvents

说明使用 COM 的事件处理。

Ee837238.collapse_all(zh-cn,VS.110).gif扩展性示例

示例名称

描述

VCProjEngine_CPP

使用 C++ 以编程方式修改 Visual C++ 项目。

VCProjEngine_CS

使用 C# 以编程方式修改 Visual C++ 项目。

VCProjEngine_VB7

使用 Visual Basic 以编程方式修改 Visual C++ 项目。

Ee837238.collapse_all(zh-cn,VS.110).gif合成示例

示例名称

描述

TraceMan

提供有关与应用程序相关的程序集的信息,以及以可读的形式提供这些程序集在本机合成缓存中的状态的信息。

Ee837238.collapse_all(zh-cn,VS.110).gif国际示例

示例名称

描述

IME

说明如何控制输入法编辑器模式和如何实现 IME 级别 3。

SatDLL

演示在 Win32 应用程序中实现多语言资源的推荐方法。

UniRes

说明 Unicode 资源文件的用法。

Ee837238.collapse_all(zh-cn,VS.110).gif语言示例

示例名称

描述

BirthdayPicker

演示如何在 C++ 应用程序中使用 .NET Framework 资源机制。 它还演示了一些常用的 Window 窗体组件。

C++ 语言示例

演示 C++ 中功能的重要概念,这些功能支持 .NET 并公开 CLR 的功能。

计算器

使用 C++ 和 .NET Framework Windows 窗体类实现一个简单的袖珍计算器。

数据

演示对 SQL 数据库的简单访问。

MEDriver

阐释如何通过从非托管 COM 服务器的类型库自动生成的 .NET Framework 包装使用(从该 COM 服务器激发的)COM 事件。

Nile

演示 ASP.NET Web 窗体和 ASP.Net Web 服务。

QStat

说明如何创建一个 DLL 来包装对 COM 对象的访问并将它的功能向 .NET Framework 客户端公开。

Scribble

演示如何使用 C++/CLI 和 .NET Framework 类开发 Windows 窗体 MDI 应用程序。

TilePuzzle

演示托管组件(用 C++ 和 C# 编写)和本机组件(使用 COM 特性用 C++ 编写)之间的互操作性。

Ee837238.collapse_all(zh-cn,VS.110).gifMFC 示例 - 高级

示例名称

描述

Collect

说明 MFC C++ 基于模板的集合类和标准的预生成集合类。

Cube

使用 MFC 设备上下文以及 OpenGL 的资源上下文的 OpenGL 应用程序。

DLLHusk

将基础类库的 DLL 版本与应用程序和自定义 DLL 共享。

DLLScreenCap

可被静态或动态链接到 Microsoft 基础类库的常规 DLL。

MTGDI

使用框架的文档和视图单文档界面 (SDI) 支持,演示在多个线程间共享 GDI 资源。

MTMDI

多线程说明,其中在单独的用户界面线程中处理用户界面事件。

MTRecalc

多线程说明,其中在辅助线程中执行重新计算。

Mutexes

基于对话框的应用程序,它创建两个 CWinThread 对象,并在用户的控制之下将它们用于执行简单任务。

Speakn

说明使用用户定义资源的多媒体声音。

Ee837238.collapse_all(zh-cn,VS.110).gifMFC 示例 - 控件

示例名称

描述

按钮

演示就地活动菜单、常用属性页和“关于”框控件选项的使用。

Circ

说明 ActiveX 控件的基础功能,包括控件绘制、常用和自定义属性、常用和自定义事件、颜色和字体的使用、常用字体属性页、默认属性页和版本控制。

CmnCtrl

演示 wiprlhext 上随 MFC 一起提供的一些新控件,其中包括命令链接按钮 (CButton)、分页控件 (CPagerCtrl)、拆分按钮 (CSplitButton) 和网络地址控件 (CNetAddressCtrl)。

Contain

说明一个可视化编辑容器应用程序。

Image

演示如何使用 MFC 生成能够异步下载数据的 ActiveX 控件。

Licensed

强制使用设计时和运行时许可证的控件。

Localize

具有说明如何将单独的类型库和资源动态链接库 (DLL) 用于本地化的本地化用户界面的控件。

NetAddr

演示 Windows Vista“网络地址验证工具”控件的使用。

Pal

显示调色板颜色的控件。 它演示只读属性、永久性 Get/Set 属性、永久性参数化属性和图片属性。

从 Windows 所有者描述的按钮控件创建子类的控件。 它演示常用属性、自定义事件和图片容纳器。

RegSvr

说明自注册代码的调用。

SpinDial

一个具有可视的数值调节钮外观的控件,它用来说明属性页数据验证。

TestHelp

具有自己的帮助文件和工具提示的 ActiveX 控件。

时间

在运行时不可见并按设定的时间间隔引发计时器事件的控件。 说明通知函数和环境属性。

XList

从 Windows 列表框创建子类的控件,它显示文本或位图项。

Ee837238.collapse_all(zh-cn,VS.110).gifMFC 示例 - 常规

示例名称

描述

ClipArt

CLIPART 目录包含可用于自定义应用程序外观的示例资源。

CmnCtrl1

说明如何使用 MFC 类(第 1 部分)创建和更改 Windows 公共控件的样式。

CmnCtrl2

说明如何使用 MFC 类(第 2 部分)创建和更改 Windows 公共控件的样式。

CTaskDialog

演示 CTaskDialog 类的各种功能。

CtrlBars

自定义工具栏和状态栏、对话栏和浮动选项板。

CtrlTest

所有者描述列表框和菜单、自定义控件 (Custom Control)、位图按钮和数值调节钮控件 (Spin Control)。

DBVList

使用 CListView 和 CDaoRecordset 类实现虚拟列表视图功能,该功能可用于列表视图公共控件。

DIBLook

说明 DIB 和调色板的使用。

DlgCbr32

将工具栏和状态栏添加到基于对话框的应用程序。

DlgTempl

说明对话框模板的动态创建。

DockTool

拖动和浮动“可停靠的”工具栏。

Dynamenu

动态修改菜单中的项列表;处理在编译时未知的命令;以及更新此类命令的状态栏命令提示。

FileDlgWatcher

创建一个自定义对话框,该对话框演示在创建 CFileDialog 时会生成什么事件。

Hello

演示了带有菜单和“关于”框的单个应用程序窗口。

HelloApp

最小的 MFC 示例,该示例演示需要几行代码,以获取要显示在屏幕上的一个窗口。

ListHdr

演示如何使用公共控件 MFC 类 CListCtrl 和 CHeaderCtrl。

MDI

未使用文档和视图的 MDI 应用程序。

MDIDocVw

MDI 示例的更新版本,该版本使用文档/视图体系结构。

MMXSwarm

演示如何使用 CImage、__m64 数据类型和设备无关位图 (DIB)。

Modeless

演示如何将 MFC CDialog 对象作为无模式对话框使用。

Multipad

简单文本编辑器,用户可用它来一次打开和编辑多个文本文件。

Npp

演示如何实现一个类似于“记事本”的界面 (SDI) 应用程序,它允许编辑文本消息并通过 Windows 消息处理 API(或 MAPI)将其发送给其他用户或其他系统。

PropDlg

属性表(对话框)。

RowList

阐释列表视图中公共控件中的整行选择。

Scribble

提供 MFC 广泛功能的简单阐释。

SimpleImage

说明加载、调整大小、转换和保存图像。

SnapVw

说明如何在 MDI 子框架窗口中使用属性页。

Spiro

说明如何使用 CImageList 和如何在需要动画效果的应用程序中使用内存显示上下文的游戏。

Tracker

演示各种 CRectTracker 样式和选项。

VariantUse

说明变量数据类型的使用。

ViewEx

多个视图、滚动视图和拆分窗口。

Ee837238.collapse_all(zh-cn,VS.110).gifMFC 示例 - Internet

示例名称

描述

DHTMLExplore

说明如何处理 DHTML 事件和使用 DHTML DDX。

HTMLEdit

包装 Internet Explorer MSHTML 编辑控件。

MFCIE

演示 MFC CHtmlView 和 CReBar 类。

Scheduler

演示如何使用 Visual C++ 库类创建基于 HTML 的对话框。

Ee837238.collapse_all(zh-cn,VS.110).gifMFC 示例 - OLE

示例名称

描述

ACDual

说明如何向基于 MFC 的自动化服务器添加双重接口支持。

AutoClik

阐释自动化功能。 包括 AUTODRIV,它是驱动 AUTOCLIK 示例应用程序的简单自动化客户端应用程序。

CalcDriv

自动化客户端。

DrawCli

也是 ActiveX 可视化编辑容器的全功能的面向对象的绘图应用程序。

HierSvr

说明具有 OLE 拖放功能的服务器应用程序。

InProc

可作为客户端地址空间中的 DLL 加载的进程中自动化服务器。

IPDrive

驱动 INPROC 示例应用程序的简单自动化客户端应用程序。

MFCBind

显示如何创建活动文档(原来叫做 DocObject)容器。

MFCCalc

实现简单计算器的自动化服务器。

OClient

具有拖放功能的 ActiveX 可视化编辑容器应用程序。

OLEView

通过自定义 OLE 接口实现 OLE 对象浏览器。

SuperPad

演示使用 CEditView 编辑文本的可视化编辑服务器。

TstCon

使用 MFC 的 OLE 嵌入支持实现 ActiveX 控件容器。 可以使用 TSTCON 测试 ActiveX 控件、更改它们的属性以及调用它们的方法。

WordPad

使用 MFC 的 Rich Edit 控件支持来创建基本的字处理应用程序。

Ee837238.collapse_all(zh-cn,VS.110).gifMFC 示例 - 实用工具

示例名称

描述

GUIDGen

一个简单的基于对话框的 MFC 应用程序,它可生成全局唯一标识符。

Makehm

在资源标识和帮助上下文之间建立映射的控制台应用程序。

Ee837238.collapse_all(zh-cn,VS.110).gifMFC 示例 - Visual C++ 2008 功能包

示例名称

描述

CustomPages

演示如何将自定义页面添加到“自定义工具栏”对话框中。

DesktopAlertDemo

演示如何实现桌面通知对话框(类似于即时消息应用程序显示的对话框)。

DlgToolTips

演示如何为对话框上的控件实现高级工具提示。

DrawClient

演示如何将功能区支持集成到面向对象且支持可视编辑容器的绘图应用程序中。

DynamicMenu

演示如何在运行时对菜单栏上的菜单以及弹出菜单进行动态更新。

Explorer

演示如何实现类似于文件资源管理器的文件系统资源管理器,具有类似用户界面元素和功能。

IEDemo

演示如何实现应用程序类似于 Internet Explorer,具有类似用户界面元素和功能。

MDITabsDemo

演示如何创建一个使用新的选项卡式 MDI 文档界面(而不是传统 MDI 子窗口)的应用程序。

MenuSubSet

演示如何在应用程序启动时动态移除特定菜单项和子菜单。

MSMoneyDemo

演示如何使用 MFC 创建与 Microsoft Money 类似的用户界面。

MSOffice2007Demo

演示如何实现编辑器应用程序类似与 Office 2007 应用程序,具有类似用户界面元素和有限类似功能。 MSOffice2007Demo 示例实现了与 Office 2007 应用程序相当类似的非常完整的功能区用户界面,某些(但不是全部)功能区元素已连接到应用程序中的功能。

NewControls

演示在 MFC 中实现的许多控件的功能,这些控件包括可自定义的按钮、颜色选取器控件和调色板、字体选择器、图像编辑器、属性网格、屏蔽编辑控件以及 shell 列表和树控件。

OutlookDemo

演示如何创建应用程序类似于 Outlook 2003/2007 类似。

OutlookMultiViews

演示如何在 SDI 应用程序中对单个文档切换多个视图。 该示例使用 Outlook 栏控件列出了可用视图,并在它们之间进行切换。

OwnerDrawMenu

阐释如何动态绘制弹出菜单项。

PaletteDemo

阐释如何创建一个具有所有者描述信息区域的多列工具栏。 单击“标准”工具栏上的“2”、“3”或“4”按钮,以在运行时更改自定义工具栏的列数。

PropSheetDemo

演示以下类型的属性表控件:简单、选项卡在左边、树控件在左边、OneNote 样式的选项卡、项列表在左边。

RebarTest

演示一个承载工具栏的可自定义的 Rebar 控件。

RibbonGadgets

演示可承载于功能区控件中的各种控件。 在主框架底部,您可以找到包含源代码文本的“源代码”窗口,此源代码文本概述了如何创建特定小工具。

RibbonMDI

演示如何将功能区控件与多文档界面结合使用。

RollupPane

演示一个浮动的“信息”窗格,该窗格会自动上卷。 您可以按浮动窗格标题上的固定按钮以打开和关闭卷动功能。

SetPaneSize

演示如何以编程方式设置停靠窗格大小。

Slider

演示如何实现一个承载外部控件的工具栏按钮。

StateCollection

演示如何实现为菜单栏、工具栏和停靠窗口保存和加载不同状态的应用程序。

StatusBarDemo

演示如何将各种高级控件添加到状态栏中。

TabbedView

演示如何创建一个包含多个选项卡式视图(如 Excel 工作簿中的选项卡)的视图。

TabControl

使用不同的属性和视觉管理器演示 MFC 选项卡控件及其具有的不同外观。

TasksPane

使用各种属性和视觉管理器演示 MFC 任务窗格类及其不同的外观。

ToolbarDateTimePicker

演示如何将日期/时间选择器控件与工具栏集成

ToolTipDemo

演示如何使用高级 MFC 工具提示功能。

TrayMenu

演示将 MFC 控件条菜单与系统任务栏图标(如显示屏右下角的通知图标)结合使用的功能。

VisualStudioDemo

演示如何实现具有许多的应用程序相同用户界面特性和某些 Visual Studio 的功能。 演示的许多 Visual Studio 用户界面元素包括可自定义的停靠菜单栏和工具栏,以及停靠窗口。

WordPad

演示如何实现模仿写字板功能(包括用户界面元素和某些功能)的应用程序。

WorkSpaceToolBar

演示如何将工具栏添加到停靠窗格中。 这与 Visual Studio 中的解决方案资源管理器中的工具栏类似。

Ee837238.collapse_all(zh-cn,VS.110).gifMFC 示例 - Windows 触摸屏

示例名称

描述

GestureDemo

演示 MFC 中的 Windows 触摸屏支持(需要触摸硬件)。

TouchDemo

演示 MFC 中的 Windows 触摸屏支持(需要触摸硬件)。

Ee837238.collapse_all(zh-cn,VS.110).gif操作系统示例

示例名称

描述

GetImage

演示 Windows 图像获取 (WIA) 应用程序编程接口 (API)。

Ee837238.collapse_all(zh-cn,VS.110).gifUnix 示例

示例名称

描述

Unix - ccWrapper

演示一个包装,该包装将标志从 Sun Forte 和 gcc 编译器映射到 Microsoft Visual C++ 编译器 (cl.exe) 中。

请参见

其他资源

Visual C++ 参考