Información general de la programación para Windows en C++
Hay varias categorías amplias de aplicaciones Windows que puede crear con C++. Cada una tiene su propio modelo de programación y conjunto de bibliotecas específicas de Windows, pero la biblioteca estándar de C++ y las bibliotecas de C++ de terceros se pueden usar en cualquiera de ellas.
En esta sección se describe cómo usar Visual Studio bibliotecas de contenedores MFC/ATL para crear Windows programa. Para obtener documentación sobre la plataforma Windows, consulte Windows documentación .
Aplicaciones de línea de comandos (consola)
Las aplicaciones de consola de C++ se ejecutan desde la línea de comandos en una ventana de consola y solo pueden mostrar la salida de texto. Para obtener más información, vea Crear una calculadora de consola en C++.
Aplicaciones cliente de escritorio nativas
Una aplicación cliente de escritorio nativa es una aplicación con ventanas de C o C++ que usa las API nativas de Windows C originales o las API de Modelo de objetos componentes (COM) para acceder al sistema operativo. Esas API se escriben principalmente en C. Hay más de una manera de crear una aplicación de escritorio nativa: puede programar directamente con las API de Win32 mediante un bucle de mensajes de estilo C que procesa eventos del sistema operativo. O bien, puede programar mediante Microsoft Foundation Classes (MFC), una biblioteca de C++ ligeramente orientada a objetos que encapsula Win32. Ninguno de estos enfoques se considera "moderno" en comparación con la Plataforma universal de Windows (UWP), pero ambos siguen siendo totalmente compatibles y tienen millones de líneas de código en ejecución en el mundo actual. Una aplicación Win32 que se ejecuta en una ventana requiere que el desarrollador trabaje explícitamente con Windows mensajes dentro de una Windows de procedimiento. A pesar del nombre, una aplicación Win32 se puede compilar como un binario de 32 bits (x86) o de 64 bits (x64). En el IDE Visual Studio, los términos x86 y Win32 son sinónimos.
Para empezar a trabajar con la programación Windows C++, consulte Introducción con Win32 y C++. Después de comprender Win32, será más fácil obtener información sobre las aplicaciones de escritorio MFC. Para obtener un ejemplo de una aplicación de escritorio de C++ tradicional que usa gráficos sofisticados, vea Hilo: Developing C++ Applications for Windows.
¿C++ o .NET?
En general, la programación de .NET en C# es menos compleja, menos propensa a errores y tiene una API orientada a objetos más moderna que Win32 o MFC. En la mayoría de los casos, su rendimiento es más que adecuado. .NET incluye Windows Presentation Foundation (WPF) para gráficos enriquecidos, y puede consumir Tanto Win32 como la API moderna Windows Runtime. Como regla general, se recomienda usar C++ para aplicaciones de escritorio cuando necesite:
- control preciso sobre el uso de memoria
- la mayor economía en el consumo de energía
- uso de la GPU para la computación general
- acceso a DirectX
- uso pesado de bibliotecas estándar de C++
También es posible combinar la eficacia y la eficacia de C++ con la programación de .NET. Puede crear una interfaz de usuario en C# y usar C++/CLI para permitir que la aplicación consuma bibliotecas nativas de C++. Para obtener más información, vea Programación de .NET con C++/CLI.
Componentes COM
El modelo de objetos componentes (COM) es una especificación que permite que los programas escritos en distintos lenguajes se comuniquen entre sí. Muchos Windows componentes se implementan como objetos COM y siguen las reglas COM estándar para la creación de objetos, la detección de interfaces y la destrucción de objetos. El uso de objetos COM desde aplicaciones de escritorio de C++ es relativamente sencillo, pero escribir su propio objeto COM es más avanzado. El Active Template Library (ATL) proporciona macros y funciones auxiliares que simplifican el desarrollo com. Para obtener más información, vea Componentes de escritorio COM ATL.
Aplicaciones de la Plataforma universal de Windows
La Plataforma Windows universal (UWP) es la API Windows moderna. Las aplicaciones para UWP se ejecutan Windows 10 dispositivos Windows 11. Usan XAML para la interfaz de usuario y están totalmente habilitados para la función táctil. Para obtener más información sobre UWP, consulta What's a Universal Windows Platform (UWP) app? (¿Qué es una aplicación de plataforma universal de Windows (UWP)? y Guide to Windows Universal Apps (Guía para Windows Universal Apps).
La compatibilidad original de C++ para UWP constaba de (1) C++/CX, un dialecto de C++ con extensiones de sintaxis o (2) la biblioteca en tiempo de ejecución de Windows (WRL), que se basa en C++ y COM estándar. C++/CX y WRL siguen siendo compatibles, pero no se recomiendan para el nuevo desarrollo. Para los proyectos nuevos, se recomienda C++/WinRT,que se basa completamente en C++ estándar y proporciona un rendimiento más rápido.
Puente de dispositivo de escritorio
En Windows 10 y versiones posteriores, puede empaquetar la aplicación de escritorio existente u objeto COM como una aplicación para UWP. Puede usar características de UWP como la función táctil o llamar a las API desde el conjunto Windows API moderna. También puedes agregar una aplicación para UWP a una solución de escritorio en Visual Studio, empaquetarlos juntos en un único paquete y usar Windows API para comunicarse entre ellas.
Visual Studio 2017 versión 15.4 y posteriores le permite crear un paquete de aplicación de Windows Project para simplificar en gran medida el trabajo de empaquetado de la aplicación de escritorio existente. Se aplican algunas restricciones a las llamadas del Registro o a las API que puede usar la aplicación de escritorio. Sin embargo, en muchos casos puede crear rutas de acceso de código alternativas para lograr una funcionalidad similar mientras se ejecuta en un paquete de aplicación. Para obtener más información, vea Puente de dispositivo de escritorio.
Juegos
Los juegos de DirectX se pueden ejecutar en el equipo o Xbox. Para obtener más información, vea Gráficos y juegos de DirectX.
SQL Server de base de datos
Para acceder a SQL Server bases de datos desde código nativo, use ODBC o OLE DB. Para obtener más información, consulte SQL Server Native Client.
Controladores de dispositivos de Windows
Los controladores son componentes de bajo nivel que hacen que los datos de dispositivos de hardware sean accesibles para las aplicaciones y otros componentes del sistema operativo. Para obtener más información, vea Windows Driver Kit (WDK).
Servicios de Windows
Un Windows es un programa que se puede ejecutar en segundo plano con poca o ninguna interacción del usuario. Estos programas se denominan demonios en UNIX sistemas. Para obtener más información, consulte Servicios.
SDK, bibliotecas y archivos de encabezado
Visual Studio incluye la biblioteca en tiempo de ejecución de C (CRT), la biblioteca estándar de C++ y otras bibliotecas específicas de Microsoft. La mayoría de las carpetas include que contienen archivos de encabezado para estas bibliotecas se encuentran en el directorio Visual Studio instalación de la carpeta \VC\. Los Windows y los archivos de encabezado de CRT se encuentran en la carpeta Windows instalación del SDK.
El administrador vcpkg paquetes le permite instalar cómodamente cientos de bibliotecas de código abierto de terceros para Windows. Para obtener más información, vea vcpkg.
Las bibliotecas de Microsoft incluyen:
Microsoft Foundation Classes (MFC): un marco de trabajo orientado a objetos para crear programas tradicionales de Windows, especialmente aplicaciones empresariales, que tienen interfaces de usuario complejas con botones, cuadros de lista, vistas de árbol y otros controles. Para obtener más información, consulta MFC Desktop Applications.
Active Template Library (ATL): una biblioteca del asistente eficaz para crear componentes COM. Para obtener más información, consulta ATL COM Desktop Components.
C++ AMP (C++ Accelerated Massive Parallelism): una biblioteca que habilita el trabajo de proceso general de alto rendimiento en la GPU. Para obtener más información, consulta C++ AMP (C++ Accelerated Massive Parallelism).
Runtime de simultaneidad: una biblioteca que simplifica el trabajo de programación paralela y asincrónica para dispositivos de varios núcleos. Para obtener más información, consulta Concurrency Runtime.
En muchos escenarios de programación para Windows también se requiere Windows SDK, que incluye los archivos de encabezado que permiten el acceso a componentes del sistema operativo Windows. De forma predeterminada, Visual Studio el SDK de Windows como un componente de la carga de trabajo escritorio de C++, lo que permite el desarrollo de aplicaciones Windows universales. Para desarrollar aplicaciones para UWP, necesita una versión Windows 10 o posterior del SDK de Windows. Para obtener más información y un vínculo de descarga, consulte Windows SDK. (Para obtener más información sobre los SDK de Windows para versiones anteriores de Windows, consulte el archivo Windows SDK).
Archivos de programa (x86)\Windows Kits es la ubicación predeterminada para todas las versiones del SDK de Windows que haya instalado.
Otras plataformas como Xbox y Azure cuentan con sus propios SDK que puede que tenga que instalar. Para obtener más información, vea el Centro para desarrolladores de DirectX y el Centro para desarrolladores de Azure.
Herramientas de desarrollo
Visual Studio incluye un depurador eficaz de código nativo, herramientas de análisis estático, herramientas de depuración de gráficos, un editor de código completo, compatibilidad con pruebas unitarias, y muchas otras herramientas y utilidades. Para obtener más información, vea Introducción al desarrollo con Visual Studioe Información general sobre el desarrollo de C++ en Visual Studio.
En esta sección
| -- | -- |
|---|---|
| Tutorial: Crear un programa estándar de C++ | Cree una aplicación Windows consola. |
| Tutorial: Crear aplicaciones de escritorio de Windows (C++) | Cree una aplicación Windows escritorio nativa. |
| Asistente para escritorio de Windows | Use el asistente para crear nuevos Windows proyectos. |
| Biblioteca de plantillas activas (ATL) | Use la biblioteca ATL para crear componentes COM en C++. |
| Microsoft Foundation Classes (MFC) | Usar MFC para crear aplicaciones grandes o pequeñas Windows con diálogos y controles |
| Clases compartidas de ATL y MFC | Use clases como CString que se comparten en ATL y MFC. |
| Acceso a datos | OLE DB y ODBC |
| Texto y cadenas | Varios tipos de cadena en Windows. |
| Recursos para crear un juego mediante DirectX | |
| Trabajar con archivos de recursos | Cómo agregar imágenes, iconos, tablas de cadenas y otros recursos a una aplicación de escritorio. |
| Recursos para crear un juego usando DirectX (C++) | Vínculos al contenido para crear juegos en C++. |
| Cómo: Usar el SDK de Windows en una aplicación de Windows Desktop | Contiene los pasos para configurar el proyecto para compilarlo mediante el SDK Windows. |
| Implementación de aplicaciones de escritorio nativas | Implemente aplicaciones nativas en Windows. |
Artículos relacionados
| Title | Descripción |
|---|---|
| C++ en Visual Studio | Tema primario para Visual C++ contenido para desarrolladores. |
| Desarrollo de .NET con C++/CLI | Cree contenedores para bibliotecas nativas de C++ que le permitan comunicarse con componentes y aplicaciones .NET. |
| Extensiones de componentes para .NET y UWP | Referencia de los elementos de sintaxis compartidos por C++/CX y C++/CLI. |
| Aplicaciones Windows universales (C++) | Escriba aplicaciones para UWP con C++/CX o Windows runtime Template Library (WRL). |
| Atributos de C++ para COM y .NET | Atributos no estándar para la Windows programación solo mediante .NET o COM. |