Download as pdf or txt
Download as pdf or txt
You are on page 1of 40

Visual C++ Samples

The Visual C++ samples illustrate a wide variety of functionality across multiple technologies.

Security noteSecurity Note

This sample code is intended to illustrate a concept, and it shows only the code that is relevant to that
concept. It may not meet the security requirements for a specific environment, and it should not be used
exactly as shown. We recommend that you add security and error-handling code to make your projects
more secure and robust. Microsoft provides this sample code "AS IS" with no warranties.

To access samples from Visual Studio

On the Help menu, click Samples.

By default, these samples are installed in drive:\Program Files\Microsoft Visual Studio


10.0\Samples\.

NoteNote

Some samples have not been modified to reflect the changes in the Visual C++ wizards, libraries, and
compiler. However, they still demonstrate how to complete the task.
To build and run a sample

1.

Open the solution in Visual Studio.


2.

On the Build menu, click Build.


3.

On the Debug menu, click Start Without Debugging.

For the most recent versions of the Visual C++ samples, see one of the following pages on the MSDN
Web site:

All Visual C++ Samples

ATL Samples

ATL Samples (using attributes)

CLR Samples

Compiler Samples
ComTypeLibfor7 Samples

CRT Samples

Debugging Samples

Event Handling Samples

Extensibility Samples

Fusion Samples

International Samples

Language Samples

MFC Samples

OS Samples

STL Samples

Unix Samples
Descriptions of the Samples
ATL Samples - Advanced

Sample Name

Description

ActiveDoc

Demonstrates how to implement an Active Document Server.

Async

Downloads data asynchronously from a URL.

ATLButton

Creates a button that displays itself with three different bitmaps depending on its state.

ATLDuck
Demonstrates using connection points with ATL controls.

ATLSecurity

Shows how to use the ATL security classes to examine security settings.

ATLTraceTool

Displays the output generated by the ATLTRACE2 macro.

Connect

Illustrates the implementation and use of connection points (the IConnectionPointContainer and
IConnectionPoint interfaces) in a multithreaded environment.

CThreadPool

Shows how to use a thread pool in an application and how implementing a thread pool can improve the
application's performance.

DCOM

Demonstrates how to call a COM object implemented in a Windows service from multiple clients
running on different machines.

MFCATL

Illustrates how ATL COM objects can be used in an MFC server EXE.
ATL Samples - Controls

Sample Name

Description

ATLFire

Demonstrates how to build a windowed control using ATL.

CDInfo
Plays CD audio tracks and displays information about the tracks in tooltips and a piechart display.

Circ

Creates a control that demonstrates property pages and draws a circle.

Polygon

Builds a control that implements custom properties, events, property pages, and object safety.

SubEdit

Creates a superclassed Windows control.


ATL Samples - General

Sample Name

Description

ATLCollections

Demonstrates the use of ICollectionOnSTLImpl and CComEnumOnSTL, and the implementation of


custom copy policy classes.

ATLCon

Demonstrates a simple control container.

ATLSafeArray

Shows how to create and maintain SAFEARRAYs using CComSafeArray; also how to pass
SAFEARRAYs from a component to script.

AutoThread

Demonstrates using CComAutoThreadModule Class.

Beeper

Implements a tearoff interface — a collection/enumeration of BSTRs.


CircColl

Implements a collection/enumeration of objects using ATL and the Standard C++ Library.

COMMap

Demonstrates COM interface map entry macros with compiler COM support.

CustomString

Shows how to use a custom memory allocator for CStringT to improve performance in a multithreaded
application.

DispSink

Demonstrates using a connection point on dispatch interfaces.


ATL Samples - OLEDB - Consumer

Sample Name

Description

CatDB

Displays the schema information, such as tables and columns, of OLE DB providers.

DBViewer

Demonstrates a mid-level application that relies on the CManualAccessor class to take full control of
data bindings for your applications.

DynamicConsumer

Demonstrates using dynamic accessor and schema rowset classes to read metadata from a database.

MultiRead

Reads through a table in a database using multiple threads.


ATL Samples - OLEDB - Provider
Sample Name

Description

AdvancedPV

Implements an updateable OLE DB Provider. Demonstrates some advanced techniques.

UpdatePV

Implements an updateable (read/write) OLE DB provider.


CLR Samples - Windows Forms

Sample Name

Description

Scribble (MFC)

An MFC implementation of the Scribble sample, updated and extended to include new .NET
functionality.

Scribble (Windows Forms)

A Windows Forms implementation of the Scribble sample, updated and extended to include new .NET
functionality.

STLCLR

Demonstrates some of the capabilities available when using the STL/CLR Library.
ComTypeLibfor7 Samples

Sample Name

Description

ACDual

Adds dual interfaces to an Automation application.


ADOSamp

Implements a three-tier client/server application.

AllInOne

Implements a server using ATL, exposing STL collections, and controlled by compiler COM support in
an MFC application.

COMMap

Demonstrates COM interface map entry macros with compiler COM support.

Connect

Illustrates the use and implementation of connection points (the IConnectionPointContainer and
IConnectionPoint interfaces) in a multithreaded environment.

DCOM

Demonstrates how to call a COM object implemented in a Windows service from multiple clients
running on different computers.

FreeThrd

Demonstrates a multithreaded client and free-threaded server with compiler COM support.

InProc

Demonstrates an in-process Automation server application with compiler COM support.

Labrador

Implements an EXE server that does not have any user interface.

MFCCalc

Demonstrates an Automation server application with compiler COM support.


Compiler Samples - General
Sample Name

Description

ccWrapper

Demonstrates how to map C/C++ compiler flags from other compilers to the Visual C++ compiler
(cl.exe).
Compiler Samples - MASM

Sample Name

Description

EuclidStep1

A pure C project that demonstrates Euclid's algorithm for finding the greatest common divisor.

EuclidStep2

An extension of EuclidStep1 that is a mixed C and ASM project. The core of Euclid's algorithm is
moved from the .c file to an .asm file, with the .c file calling into the .asm file.

PrimesStep1

A pure C project that demonstrates the sieve of Eratosthenes to find prime numbers.

PrimesStep2

An extension of PrimesStep1 that is a mixed C and ASM project that moves the core algorithm to the
.asm file.

PrimesStep3

An extension of PrimesStep2 that adds a separate C header file and an .asm include file to declare the
extern function and global data structure.
CRT Samples

Sample Name
Description

CPUID

Determines the capabilities of the CPU being run.

CRT_Dbg1

Illustrates the basic debugging features of the C run-time libraries.

CRT_Dbg2

Demonstrates the C run-time debugging hook functions.

DFACObjs

Shows how to use the _CrtDoForAllClientObjects C run-time function to iterate through a linked list of
client objects.

Report

Illustrates the C run-time debugging report functions.

RTC

Demonstrates the run-time error checks feature.

SecureCRT

This sample demonstrates how to upgrade code that used deprecated CRT functions to increase code
security.
Debugging Samples

Sample Name

Description

EEAddIn
Uses the Expression Evaluator Add-In API to extend the native debugger expression evaluator.
Events Samples

Sample Name

Description

COMEvents

Demonstrates event handling using COM.


Extensibility Samples

Sample Name

Description

VCProjEngine_CPP

Programmatically modifies a Visual C++ project using C++.

VCProjEngine_CS

Programmatically modifies a Visual C++ project using C#.

VCProjEngine_VB7

Programmatically modifies a Visual C++ project using Visual Basic.


Fusion Samples

Sample Name

Description

TraceMan

Provides information about application-dependent assemblies and the state of the assemblies in the
native fusion cache in human readable form.
International Samples

Sample Name
Description

IME

Demonstrates how to control the Input Method Editor mode and how to implement IME level 3.

SatDLL

Demonstrates a recommended way to implement multilingual resources in a Win32 application.

UniRes

Demonstrates the use of Unicode resource files.


Language Samples

Sample Name

Description

BirthdayPicker

Shows how the .NET Framework resource mechanism can be used in C++ applications. It also
demonstrates some common Window Forms components.

C++ Language Samples

Demonstrates key concepts of features in C++ that support .NET and expose capabilities of the CLR.

Calculator

Implements a simple pocket calculator using C++ and the .NET Framework Windows Forms classes.

Data

Demonstrates simple access to a SQL Database.

MEDriver

Illustrates the use of COM events (fired from an unmanaged COM server) through a .NET Framework
wrapper, automatically generated from the COM server's type library.

Nile

Demonstrates ASP.NET Web Forms and ASP.Net Web Services.

QStat

Shows how to create a DLL that wraps access to a COM object and exposes its functionality to .NET
Framework clients.

Scribble

Demonstrates how to develop a Windows Forms MDI application using C++/CLI and the .NET
Framework classes.

TilePuzzle

Demonstrates interoperability between managed components (written with C++ and C#) and native
components (written with C++ using COM attributes).
MFC Samples - Advanced

Sample Name

Description

Collect

Demonstrates MFC C++ template-based collection classes and standard prebuilt collection classes.

Cube

OpenGL application using MFC device contexts along with OpenGL's resource contexts.

DLLHusk

Sharing the DLL version of the Foundation class library with an application and custom DLL.

DLLScreenCap
A regular DLL that can be statically or dynamically linked to the Microsoft Foundation Class Library.

MTGDI

Demonstration of sharing GDI resources among multiple threads using the framework's single
document interface (SDI) support for documents and views.

MTMDI

Multithread illustration, where user-interface events are processed in a separate user-interface thread.

MTRecalc

Multithread illustration, where recalculations are performed in a worker thread.

Mutexes

Dialog-based application that creates two CWinThread objects and uses them to perform a simple task
under the user's control.

Speakn

Demonstrates Multimedia Sound Using User-Defined Resources.


MFC Samples - Controls

Sample Name

Description

Button

Demonstrates use of an in-place active menu, a stock property page, and the About box control option.

Circ

Demonstrates ActiveX control basics, including control painting, stock and custom properties, stock
and custom events, use of colors and fonts, the stock Font property page, the default property page, and
versioning.

CmnCtrl
Demonstrates some of the new controls available with MFC on wiprlhext, including the command link
button (CButton), the pager control (CPagerCtrl), the split button (CSplitButton), and the network
address control (CNetAddressCtrl).

Contain

Demonstrates a Visual Editing Container Application.

Image

Demonstrates how to use MFC to build an ActiveX control that is capable of downloading data
asynchronously.

Licensed

A control that enforces use of a design-time and run-time license.

Localize

A control with a localized user interface that demonstrates use of separate type libraries and resource
dynamic-link libraries (DLLs) for localization.

NetAddr

Demonstrates use of the Windows Vista "Net Address Verifier" control.

Pal

Control that displays the colors of a palette. It demonstrates read-only properties, persistent Get/Set
properties, persistent parameterized properties, and picture properties.

Push

Control subclassed from a Windows owner-drawn button control. It demonstrates stock properties,
custom events, and picture holders.

RegSvr

Demonstrates the invocation of Self-Registration Code.


SpinDial

A control with the visual appearance of a spin-dial that demonstrates property page data validation.

TestHelp

An ActiveX control that has its own help file and tooltips.

Time

A control that is invisible at run time and fires a timer event at set intervals. Demonstrates notification
functions and ambient properties.

XList

A control, subclassed from a Windows list box, that displays text or bitmap items.
MFC Samples - General

Sample Name

Description

ClipArt

The CLIPART directory contains sample resources that you can use to customize the appearance of
your application.

CmnCtrl1

Demonstrates how to create and change the styles of Windows Common Controls using MFC classes
(Part 1).

CmnCtrl2

Demonstrates how to create and change the styles of Windows Common Controls using MFC classes
(Part 2).

CTaskDialog

Demonstrates various features of the CTaskDialog class.


CtrlBars

Custom toolbar and status bar, dialog bar, and floating palette.

CtrlTest

Owner-draw list box and menu, custom control, bitmap button, spin control.

DBVList

Uses the CListView and CDaoRecordset classes to implement the virtual list view functionality that is
available for the list view common control.

DIBLook

Demonstrates the Use of DIBs and Color Palettes.

DlgCbr32

Adding a toolbar and a status bar to a dialog-based application.

DlgTempl

Demonstrates the dynamic creation of dialog templates.

DockTool

Dragging and floating toolbars that are "dockable".

Dynamenu

Dynamically modifying list of items in menus; handling commands not known at compile time; and
updating the status bar command prompt for such commands.

FileDlgWatcher

Creates a custom dialog box that illustrates what events are generated when you create a CFileDialog.

Hello
Illustrates a single application window with a menu and About box.

HelloApp

Minimal MFC sample that illustrates that few lines of code are required to get a window to appear on
the screen.

ListHdr

Demonstrates how to use the common control MFC classes CListCtrl and CHeaderCtrl.

MDI

MDI application that does not use documents and views.

MDIDocVw

Updated version of the MDI sample that uses the document/view architecture.

MMXSwarm

Demonstrates how to use CImage, the __m64 data type, and device-independent bitmaps (DIBs).

Modeless

Demonstrates the use of an MFC CDialog object as a modeless dialog box.

Multipad

Simple text editor that lets the user open and edit multiple text files at one time.

Npp

Demonstrates how to implement an interface (SDI) application similar to Notepad that allows you to
edit text messages and send them to other users or other systems through the Windows messaging API,
or MAPI.

PropDlg
Property sheets (dialogs).

RowList

Illustrates full row selection in a list-view common control.

Scribble

Provides simple illustrations of a wide breadth of MFC features.

SimpleImage

Demonstrates loading, resizing, conversion, and saving images.

SnapVw

Shows how to use property pages in a MDI child frame window.

Spiro

A game that shows to use CImageList and how to use memory display contexts in applications
requiring animation effects.

Tracker

Demonstrates various CRectTracker styles and options.

VariantUse

Demonstrates the use of the variant data type.

ViewEx

Multiple views, scroll view, splitter windows.


MFC Samples - Internet

Sample Name

Description
DHTMLExplore

Demonstrates handling DHTML events and using DHTML DDX.

HTMLEdit

Wraps the Internet Explorer MSHTML editing control.

MFCIE

Demonstrates the MFC CHtmlView and CReBar Classes.

Scheduler

Demonstrates how to create an HTML-based dialog box using the Visual C++ libraries classes.
MFC Samples - OLE

Sample Name

Description

ACDual

Demonstrates how to add dual interface support to an MFC-based Automation server.

AutoClik

Illustrates Automation features. Includes AUTODRIV, a simple Automation client application that
drives the AUTOCLIK sample application.

CalcDriv

Automation client.

DrawCli

Full-featured object-oriented drawing application that is also an ActiveX Visual Editing container.

HierSvr
Demonstrates a Server Application with OLE Drag and Drop.

InProc

An in-process Automation server that can be loaded as a DLL in the client's address space.

IPDrive

A simple Automation client application that drives the INPROC sample application.

MFCBind

Shows how to create an Active document (formerly known as a DocObject) container.

MFCCalc

An Automation server that implements a simple calculator.

OClient

ActiveX Visual Editing container application, with drag and drop.

OLEView

Implementing an OLE object browser through custom OLE interfaces.

SuperPad

Demonstrates a Visual Editing Server That Edits Text Using CEditView.

TstCon

Implements an ActiveX control container using MFC's support for OLE embedding. You can use
TSTCON to test ActiveX controls, change their properties, and invoke their methods.

WordPad

Uses MFC's support for rich edit controls to create a basic word processor.
MFC Samples - Utility

Sample Name

Description

GUIDGen

A simple dialog-based MFC application that generates globally-unique identifiers.

Makehm

A console application that produces a mapping between resource identifications and Help contexts.
MFC Samples - Visual C++ 2008 Feature Pack

Sample Name

Description

CustomPages

Demonstrates how to add a custom page to the Toolbar Customization dialog box.

DesktopAlertDemo

Demonstrates how to implement a desktop alert dialog box (similar to the dialog box that an instant
messaging application displays).

DlgToolTips
Demonstrates how to implement advanced tooltips for controls on a dialog box.

DrawClient

Demonstrates how to integrate support for a ribbon into an object-oriented drawing application with
visual editing container support.

DynamicMenu

Demonstrates how to dynamically update a menu on the menu bar and a popup menu at run-time.

Explorer

Demonstrates how to implement a file system explorer that resembles the Windows Explorer, with
similar user interface elements and capabilities.

IEDemo
Demonstrates how to implement an application similar to Internet Explorer, with similar user interface
elements and capabilities.

MDITabsDemo

Demonstrates how to create an application that uses the new tabbed MDI documents interface instead
of the traditional MDI child windows.

MenuSubSet

Demonstrates how to dynamically remove specific menu items and submenus at application startup.

MSMoneyDemo

Demonstrates how to use MFC to create a user interface similar to Microsoft Money.

MSOffice2007Demo

Demonstrates how to implement an editor application similar to an Office 2007 application, with
similar user interface elements and limited similar capabilities. The MSOffice2007Demo sample
implements a very full ribbon user interface much like an Office 2007 application, and some (but not
all) of the ribbon elements are connected to capabilities in the application.

NewControls

Demonstrates the capabilities of many of the controls implemented in MFC, including customizable
buttons, color picker controls and palettes, a font chooser, an image editor, a property grid, a masked
edit control, and shell list and tree controls.

OutlookDemo

Demonstrates how to create an application similar to Microsoft Outlook 2003/2007.

OutlookMultiViews

Demonstrates how to switch between multiple views on a single document in an SDI application. The
sample uses the Outlook bar control to list the available views and switch between them.

OwnerDrawMenu

Illustrates how to draw popup menu items dynamically.

PaletteDemo

Illustrates how to create a multi-column toolbar with an owner-draw information area. Click 2, 3 or 4
buttons on the Standard toolbar in order to change at the runtime the number of columns of the custom
toolbar.

PropSheetDemo

Illustrates the following types of Property Sheet control: simple, with tabs at the left side, with tree
control at the left side, OneNote-style tabs, list of items at the left side.

RebarTest

Demonstrates a customizable Rebar control which hosts a toolbar.

RibbonGadgets

Illustrates various controls that can be hosted in the Ribbon Control. At the bottom of the main frame
you can find the Source Code window with source code text, which outlines how to create a particular
gadget.
RibbonMDI

Demonstrates usage of Ribbon Control with Multi Document Interface.

RollupPane

Demonstrates a floating "information" pane, which automatically rolls up. You can press the pin button
on the caption of floating pane to turn rolling on and off.

SetPaneSize

Demonstrates how to set docking pane size programmatically.

Slider

Demonstrates how to implement a toolbar button that hosts an external control.

StateCollection

Demonstrates how to implement an application that saves and loads different states for the menu bar,
toolbars, and docking windows.

StatusBarDemo

Demonstrates how to add various advanced controls to a status bar.

TabbedView

Demonstrates how to create a view that contains multiple tabbed views, such as the tabs in an Excel
workbook.

TabControl

Demonstrates the MFC Tab Control and the different appearances it has using different properties and
visual managers.

TasksPane

Demonstrates the MFC Task Pane classes and their different appearances using various properties and
visual managers.

ToolbarDateTimePicker

Demonstrates how to integrate a date/time picker control with the toolbar

ToolTipDemo

Demonstrates how to use advanced MFC tooltip features.

You might also like