Skip to content

Commit 5f4e561

Browse files
authored
Merge pull request #720 from mikeblome/mb-winupdate
Updates to windows overview page
2 parents 0243e96 + 6ebb5d3 commit 5f4e561

File tree

1 file changed

+29
-24
lines changed

1 file changed

+29
-24
lines changed

docs/windows/overview-of-windows-programming-in-cpp.md

Lines changed: 29 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: "Overview of Windows Programming in C++ | Microsoft Docs"
33
ms.custom: ""
4-
ms.date: "11/27/2017"
4+
ms.date: "04/06/2018"
55
ms.reviewer: ""
66
ms.suite: ""
77
ms.technology: ["cpp-windows"]
@@ -17,15 +17,20 @@ ms.workload: ["cplusplus", "uwp"]
1717
---
1818
# Overview of Windows Programming in C++
1919

20-
You can use Visual C++ to write a wide variety of programs that run on a Windows PC (x86, x64 or ARM), on a Windows server, in the cloud, or on Xbox. Well-written C++ programs are fast, efficient, economical in power consumption, and able to take full advantage of multicore and many-core devices, general computing on the graphics processing unit (GPGPU), and other recent advances in hardware.
20+
You can use Visual C++ to write many kinds of programs that run on a Windows PC (x86, x64 or ARM), on a Windows server, in the cloud, or on Xbox. Well-written C++ programs have these qualities:
21+
- efficient in memory requirements
22+
- economical in power consumption
23+
- able to take full advantage of multicore and many-core devices
24+
- able to do general computing on the graphics processing unit (GPGPU)
25+
- able to take advantage of other recent advances in hardware.
2126

22-
There are several broad categories of Windows apps that you can develop with Visual C++. These categories have different programming models, or app models, which means that they use different libraries and APIs that provide access to the platform and provide user interface.
27+
There are several broad categories of Windows apps that you can develop with Visual C++. These categories have different programming models, or app models, which have been introduced over the years. Each model uses different libraries and APIs to provide access to the platform and create user interfaces such as windows and dialog boxes. The C++ standard library as well as third-party libraries can be used in any of these categories, with a few restrictions for UWP.
2328

2429
- [Windows Universal apps](#BK_WindowsUniversal). The third category of Windows apps was introduced with Windows 8, and support for this category of apps continues in Windows 10. These apps are frequently referred to as just "Windows apps" and they include desktop and mobile apps that target a variety of devices. You can write these apps in C++/CX, a dialect of C++ that includes support for Windows Runtime development, or in standard C++ with COM using the Windows Runtime Library (WRL). These apps were originally designed to run full-screen, although in Windows 10 users have the option of running them in a desktop window. These apps are touch-oriented, but it is easy to use the mouse to operate if users prefer or if a touch screen is not available. These apps are distributed from the Microsoft Store, a fact which led to them being called "Store" apps.
2530

26-
- [Desktop, Server, and Cloud Applications and Games](#BK_Native). This category includes Windows Desktop applications, sometimes called Win32 applications since these applications were using the Win32 API on Prior to Windows 8, all Windows applications were in this category. Applications in this category can use MFC for a user interface and ATL to interact with Windows components, which are typically COM objects.
31+
UWP apps are able to run on all Windows 10 devices such as tablets and mobile phones, as well as on the desktop. On the desktop, they are able to run as a desktop window, instead of always running full-screen. These apps can also run on the Xbox, and on future devices. UWP apps run on the Windows Runtime, which provides user interface elements, services, and an interface to the diverse hardware devices that are supported on Windows.
2732

28-
Applications, components, or libraries written with standard C++ also fit into this category.
33+
You can write UWP apps in C++/CX, a dialect of C++, you can use the [C++/WinRT library](https://moderncpp.com/)for some scenarios. UWP apps compile to native code and have a XAML user interface, or use DirectX. Windows Runtime components that are written in native code that UWP apps written in other languages can consume. For more information, see [Create a Universal Windows Platform app in C++](http://go.microsoft.com/fwlink/?LinkID=534976), [Create your first UWP game using DirectX](http://go.microsoft.com/fwlink/p/?LinkId=244656), and [Creating Windows Runtime components in C++](http://go.microsoft.com/fwlink/p/?LinkId=244658).
2934

3035
This category also includes using C++ for core components and computational code in the context of server and cloud programming. Sometimes the performance-intensive code at the core of a server or cloud application is written in C++ to maximize performance. You can compile such code into a DLL and use it from C# or Visual Basic.
3136

@@ -42,33 +47,23 @@ For Universal Windows Platform samples, see [Windows Universal Samples on GitHub
4247

4348
If you have an existing Windows 8.1 project and want to port it to Windows 10, see [Porting to the Universal Windows Platform](../porting/porting-to-the-universal-windows-platform-cpp.md). If you have existing classic Win32 desktop libraries and code that you want to integrate into a UWP app, see [How to: Use Existing C++ Code in a Universal Windows Platform App](../porting/how-to-use-existing-cpp-code-in-a-universal-windows-platform-app.md).
4449

45-
You can also write Universal Windows apps, games, and components without using the C++/CX; instead, you can use the Windows Runtime C++ Template Library (Windows Runtime C++ Template Library). For more information, see [Windows Runtime C++ Template Library (WRL)](../windows/windows-runtime-cpp-template-library-wrl.md).
46-
47-
With [!INCLUDE[cpp_dev14_long](../porting/includes/cpp_dev14_long_md.md)], you can develop Universal Windows apps that run on Windows 10 desktop and mobile devices. You can also develop Windows 8.1 apps and Windows Phone 8.1 apps in [!INCLUDE[cpp_dev14_long](../porting/includes/cpp_dev14_long_md.md)], but to do so, you must first install Visual Studio 2013 on the same computer, and then configure your project to use the **Visual Studio 2013 (v120)** toolset. To configure this setting in your project, open the project's properties and in the **General** section, set the **Platform Toolset** to **Visual Studio 2013 (v120)**.
48-
49-
If you install the Phone 8.0 tools in Visual Studio setup, you can also target Windows Phone 8.0.
50-
51-
A new concept introduced in Windows 10 called API Contracts replaces the old practice of targeting specific Windows versions. Instead, you can choose which API Contracts your app needs and it will then run on any Windows device that supports those contracts. An API contract is a set of stable APIs that provide access to platform or device resources. API Contracts can be included as references in the project system. In a Visual Studio project, if you add a reference to a particular Extension SDK, then Visual Studio adds the appropriate API Contracts.
50+
For more information on UWP in general, see [What's a Universal Windows Platform (UWP) app?](/windows/uwp/get-started/whats-a-uwp).
5251

5352
For more information on all of these concepts, see [Guide to Windows Universal Apps](http://go.microsoft.com/fwlink/p/?linkid=534605).
5453

55-
## <a name="BK_Native"></a> Desktop, Server, and Cloud Apps and Games
56-
57-
In the cloud you can write Azure native code assemblies in C++ and call into them from Web Roles that are created in C#. For more information, see [Azure SDK](http://go.microsoft.com/fwlink/p/?LinkId=256416).
54+
## <a name="BK_Native"></a> Desktop and Server applications
5855

5956
To learn the basics of writing Windows client applications for the desktop, see [Developing Windows Applications in C++](http://msdn.microsoft.com/vstudio//hh304489) and [Introduction to Windows Programming in C++](http://msdn.microsoft.com/library/windows/desktop/ff381398\(v=vs.85\).aspx).
6057

61-
On Windows 10, you can use Visual C++ to create many kinds of programs:
58+
On Windows 10, you can use Visual C++ to create many kinds of desktop programs:
6259

6360
- Command-line apps and utilities. For more information, see [Console Applications](../windows/console-applications-in-visual-cpp.md).
6461

65-
- DirectX Games that run on the PC or Xbox. For more information, see [DirectX Developer Center](http://go.microsoft.com/fwlink/p/?LinkId=256418).
66-
6762
- Consumer applications that have sophisticated graphical user interfaces. For more information, see [Hilo: Developing C++ Applications for Windows](http://go.microsoft.com/fwlink/p/?LinkId=256417)
6863

69-
- Enterprise and line-of-business apps that run on the .NET Framework, or serve as a bridge between .NET Framework apps and apps or components that are written in native code. For more information, see [.NET Programming with C++/CLI (Visual C++)](../dotnet/dotnet-programming-with-cpp-cli-visual-cpp.md).
64+
- Enterprise and line-of-business apps that run on the .NET Framework. Most .NET Framework applications are written in C# or Visual Basic. You can use C++/CLI to create interop layers that enable .NET code to consume native C++ libraries. For more information, see [.NET Programming with C++/CLI (Visual C++)](../dotnet/dotnet-programming-with-cpp-cli-visual-cpp.md).
7065

71-
- SQL database clients that run in native code. For more information, see [SQL Server Native Client](http://go.microsoft.com/fwlink/p/?LinkId=256419).
66+
- SQL database clients that run in native code. For more information, see [SQL Server Native Client](/sql/relational-databases/native-client/odbc/sql-server-native-client-odbc).
7267

7368
- Add-ins for Microsoft Office applications. For more information, see [Building a C++ Add-in for Outlook 2010](http://go.microsoft.com/fwlink/p/?LinkId=256420)
7469

@@ -78,9 +73,17 @@ On Windows 10, you can use Visual C++ to create many kinds of programs:
7873

7974
You can use Visual C++ to package almost any kind of custom high-performance functionality in Win32 DLLs or in COM DLLs that can be consumed by C++ apps or by apps that are written in other languages—for example, C# or Visual Basic. For more information about WIn32 DLLs, see [DLLs in Visual C++](../build/dlls-in-visual-cpp.md). For more information about COM development, see [Component Object Model (COM)](https://msdn.microsoft.com/library/windows/desktop/ms680573).
8075

81-
## SDKs and Header Files
76+
## Games
8277

83-
Visual C++ includes the C Runtime Library (CRT), the C++ Standard Library, and other Microsoft-specific libraries. The include folders that contain header files for these libraries are either located in the Visual Studio installation directory under the \VC\ folder, or in the case of the CRT, Windows SDK installation folder, for example, Windows Kits\10 in your Program Files folder for the Windows 10 SDK. The Microsoft libraries include:
78+
DirectX games can run on the PC or Xbox. For more information, see [DirectX Developer Center](http://go.microsoft.com/fwlink/p/?LinkId=256418).
79+
80+
## SDKs, libraries, and header files
81+
82+
Visual C++ includes the C Runtime Library (CRT), the C++ Standard Library, and other Microsoft-specific libraries. The include folders that contain header files for these libraries are located either in the Visual Studio installation directory under the \VC\ folder, or in the case of the CRT, in the Windows SDK installation folder.
83+
84+
You can use the [Vcpkg package manager](../vcpkg.md) to conveniently install hundreds of third-party open-source libraries for Windows.
85+
86+
The Microsoft libraries include:
8487

8588
- Microsoft Foundation Classes (MFC): An object-oriented framework for creating traditional Windows programs—especially enterprise applications—that have rich user interfaces that feature buttons, list boxes, tree views, and other controls. For more information, see [MFC Desktop Applications](../mfc/mfc-desktop-applications.md).
8689

@@ -90,7 +93,9 @@ Visual C++ includes the C Runtime Library (CRT), the C++ Standard Library, and o
9093

9194
- Concurrency Runtime: A library that simplifies the work of parallel and asynchronous programming for multicore and many-core devices. For more information, see [Concurrency Runtime](../parallel/concrt/concurrency-runtime.md).
9295

93-
Many Windows programming scenarios also require the Windows SDK, which includes the header files that enable access to the Windows operating system components. By default, Visual Studio installs the Windows SDK, which enables development of Universal Windows apps. To develop Universal Windows apps for Windows 10, you need the Windows 10 version of the Windows SDK. For information about the Windows 10 SDK, see [Windows 10 SDK](https://dev.windows.com/downloads/windows-10-sdk). (For more information about the Windows SDKs for earlier versions of Windows, see the [Windows SDK archive](https://developer.microsoft.com/windows/downloads/sdk-archive)).
96+
Many Windows programming scenarios also require the Windows SDK, which includes the header files that enable access to the Windows operating system components. By default, Visual Studio installs the Windows SDK as a component of the C++ Desktop workload, which enables development of Universal Windows apps. To develop UWP apps, you need the Windows 10 version of the Windows SDK. For information, see [Windows 10 SDK](https://dev.windows.com/downloads/windows-10-sdk). (For more information about the Windows SDKs for earlier versions of Windows, see the [Windows SDK archive](https://developer.microsoft.com/windows/downloads/sdk-archive)).
97+
98+
**Program Files (x86)\Windows Kits** is the default location for for all versions of the Windows SDK that you have installed.
9499

95100
Other platforms such as Xbox and Azure have their own SDKs that you may have to install. For more information, see the DirectX Developer Center and the Azure Developer Center.
96101

@@ -102,4 +107,4 @@ Visual Studio includes a powerful debugger for native code, static analysis tool
102107

103108
|Title|Description|
104109
|-----------|-----------------|
105-
|[Visual C++](../visual-cpp-in-visual-studio.md)|Parent topic for Visual C++ developer content.|
110+
|[Visual C++](../visual-cpp-in-visual-studio.md)|Parent topic for Visual C++ developer content.|

0 commit comments

Comments
 (0)