Tipos de aplicación de escritorio de Windows C++
Una aplicación de escritorio en C++ es una aplicación nativa que puede acceder al conjunto completo de API de Windows y se ejecuta en una ventana o en la consola del sistema. Las aplicaciones de escritorio de C++ se pueden ejecutar en Windows XP a través de Windows 11 (aunque Windows XP ya no se admite oficialmente y hay muchas nuevas API de Windows desde entonces).
Cualquier aplicación de escritorio en C++ puede usar el runtime de C (CRT), las clases y las funciones de la biblioteca estándar, los objetos COM y cualquiera de las funciones de Windows públicas que se conocen colectivamente como la API de Windows. Para obtener una introducción a las aplicaciones de escritorio de Windows en C++, consulte Introducción a Win32 y C++.
Hay varias categorías amplias de aplicaciones de Windows que se pueden crear con C++, que se describen a continuación. Cada uno tiene su propio modelo de programación y conjunto de bibliotecas específicas de Windows. La biblioteca estándar de C++ y las bibliotecas de C++ de terceros se pueden usar en cualquiera de ellas.
Para documentación sobre la plataforma de Windows misma, consulte la documentación de Windows.
Aplicaciones cliente de escritorio nativas
Una aplicación cliente de escritorio nativa, o aplicación deWin32, es una aplicación de escritorio de Windows escrita en C o C++ que usa API nativas de C Windows o API del modelo de objetos componentes (COM) API de CRT y biblioteca estándar y bibliotecas de terceros. Una aplicación Win32 que se ejecuta en una ventana requiere que el desarrollador controle los mensajes de Windows dentro de una función de procedimiento de Windows. 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 de Visual Studio, los términos x86 y Win32 son sinónimos.
- Para empezar a trabajar con la programación tradicional de Windows C++, consulte Introducción a Win32 y C++.
- Para obtener un ejemplo de una aplicación de escritorio tradicional de C++ que usa gráficos sofisticados, consulte Hilo: Desarrollo de aplicaciones de C++ para Windows.
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 salida de texto.
- Para obtener más información, consulte Creación de una calculadora de consola en C++.
Aplicaciones para UWP
La Plataforma universal de Windows (UWP) es la API moderna de Windows. Las aplicaciones para UWP se ejecutan en Windows 11, Windows 10, XBox, Windows Phone, Surface Hub y otros dispositivos. Las aplicaciones para UWP usan XAML para la interfaz de usuario y están totalmente habilitadas para tocar. Una aplicación de escritorio es distinta de una aplicación para la Plataforma universal de Windows (UWP).
- Para más información sobre las aplicaciones de escritorio en comparación con las aplicaciones de UWP, consulte Elección tecnológica.
- Para obtener más información sobre UWP, vea ¿Qué es una aplicación para la Plataforma universal de Windows (UWP) y Guía para aplicaciones universales de Windows.
La compatibilidad original de C++ para UWP consta de C++/CX, un dialecto de C++ con extensiones de sintaxis o la Biblioteca de Windows Runtime (WRL), que se basa en C++ y COM estándar. Todavía se admiten C++/CX y WRL, pero no se recomiendan para un nuevo desarrollo.
En el caso de los nuevos proyectos, se recomienda C++/WinRT, que se basa completamente en C++ estándar y proporciona un rendimiento más rápido.
Una aplicación o componente de C++/CLI usa extensiones para la sintaxis de C++ (según lo permitido por el estándar de C++) para permitir la interacción entre .NET y el código nativo de C++. Una aplicación de C++/CLI puede tener elementos que se ejecutan de forma nativa y elementos que se ejecutan en .NET Framework con acceso a la biblioteca de clases base de .NET. C++/CLI es la opción preferida si tiene código nativo de C++ que necesita trabajar con código escrito en C# o Visual Basic. Está pensado para su uso en archivos DLL de .NET en lugar de en código de interfaz de usuario.
- Par obtener más información, consulte el artículo sobre la programación de .NET con C++/CLI (Visual C++).
Puente de dispositivo de escritorio
En Windows 10 y versiones posteriores, puede empaquetar la aplicación de escritorio existente o el objeto COM como una aplicación para UWP. Puede usar características de UWP, como la entrada táctil, o llamar a las API desde el conjunto de API de Windows moderno. También puede agregar una aplicación para UWP a una solución de escritorio en Visual Studio, empaquetarlas juntas en un único paquete y usar las API de Windows para comunicarse entre ellas.
Visual Studio 2017, versión 15.4 y posteriores, le permite crear un proyecto de paquete de aplicación de Windows para simplificar considerablemente 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 la aplicación.
- Para obtener más información, vea Puente de dispositivo de escritorio.
¿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 la Windows Presentation Foundation (WPF) para gráficos enriquecidos y puede consumir Win32 y la API de Windows Runtime moderna. Como regla general, se recomienda usar C++ para aplicaciones de escritorio cuando necesite:
- control preciso sobre el uso de memoria
- la máxima economía en el consumo de energía
- uso de la GPU para la informática general
- acceso a DirectX
- uso intensivo de las bibliotecas estándar de C++
También es posible combinar la potencia y la eficiencia 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++.
- Par obtener más información, consulte Programación de .NET con C++/CLI.
Juegos
Los juegos de DirectX pueden ejecutarse en un equipo informático o en Xbox.
- Para obtener más información, consulte Gráficos y juegos de DirectX.
Clientes de base de datos de SQL Server
Para acceder a bases de datos de SQL Server desde código nativo, use ODBC u OLE DB.
- Para obtener más información, consulte SQL Server Native Client.
Controladores de dispositivos Windows
Los controladores son componentes de bajo nivel que permiten que los datos de los dispositivos de hardware sean accesibles para aplicaciones y otros componentes del sistema operativo.
- Para obtener más información, consulte Kit para controladores de Windows (WDK).
Servicios de Windows
Un servicio de 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 sistemas UNIX.
- Para obtener más información, consulte Servicios.
COM
El modelo de objetos componentes (COM) es una especificación que permite que los programas escritos en diferentes lenguajes interoperan entre sí.
Muchos componentes de Windows se implementan como objetos COM y siguen las reglas COM estándar para la creación de objetos, la detección de interfaz y la destrucción de objetos. El uso de objetos COM de aplicaciones de escritorio de C++ es relativamente sencillo, pero escribir su propio objeto COM es más avanzado.
Active Template Library (ATL) proporciona macros y funciones auxiliares que simplifican el desarrollo COM. Para obtener más información, consulta Componentes de escritorio de ATL COM.
MFC
Una aplicación MFC es una aplicación de escritorio de Windows que usa el Microsoft Foundation Classes para crear la interfaz de usuario. Una aplicación MFC también puede usar componentes COM y CRT y API de biblioteca estándar.
MFC proporciona un contenedor fino orientado a objetos de C++ sobre el bucle de mensajes de ventana y las API de Windows. MFC es la opción predeterminada para las aplicaciones, especialmente de tipo empresarial que tienen muchos controles de interfaz de usuario o controles de usuario personalizados.
MFC proporciona clases del asistente útiles para la administración de ventanas, la serialización, la manipulación de texto, la impresión y elementos modernos de la interfaz de usuario tales como la cinta de opciones. Para ser eficaz con MFC, debe estar familiarizado con Win32.
SDK,bibliotecas y archivos de encabezado
Visual Studio incluye la biblioteca de C Runtime (CRT), la biblioteca estándar de C++ y otras bibliotecas específicas de Microsoft. La mayoría de las carpetas que contienen archivos de encabezado para estas bibliotecas se encuentran en el directorio de instalación de Visual Studio en la carpeta \VC\ (por ejemplo, C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.39.33519\include\
). Los archivos de encabezado de Windows y CRT se encuentran en la carpeta de instalación de Windows SDK (por ejemplo, C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\ucrt\
)
El administrador de paquetes vcpkg le permite instalar convenientemente cientos de bibliotecas de código abierto de terceros para Windows. Para obtener más información, vea vcpkg.
Entre las bibliotecas de Microsoft se 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 instala Windows SDK como un componente de la carga de trabajo de escritorio de C++, lo que permite el desarrollo de aplicaciones universales de Windows. Para desarrollar aplicaciones para UWP, necesita Windows 10 o una versión posterior de Windows SDK.
- 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 de Windows SDK.
La ubicación predeterminada para todas las versiones de Windows SDK que instale es: Program Files (x86)\Windows Kits
.
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, consulte Introducción al desarrollo con Visual Studio e Introducción al desarrollo de C++ en Visual Studio.
En esta sección
Vínculo | Descripción |
---|---|
Tutorial: Creación de aplicaciones de escritorio de Windows (C++) | Cree una aplicación nativa de escritorio de Windows. |
Cómo: Usar Windows SDK en una aplicación de escritorio de Windows | Indica los pasos necesarios para configurar el proyecto por compilar con Windows SDK. |
Tutorial: Crear un programa estándar de C++ | Cree una aplicación de consola de Windows. |
Tutorial: Crear una calculadora de consola en C++ | Cree una sencilla aplicación de consola de Windows. Una aplicación de consola Win32 (o Win64) no tiene ninguna ventana propia ni ningún bucle de mensajes. Se ejecuta en la ventana de la consola; la entrada y la salida se controlan a través de la línea de comandos. |
Implementación de aplicaciones de escritorio nativas | Implemente aplicaciones nativas en Windows. |
Tutorial: Creación y uso de una biblioteca estática | Cómo crear un archivo binario .lib . |
Asistente para escritorio de Windows | Use el asistente para crear nuevos proyectos de Windows. |
Active Template Library (ATL) | Use la biblioteca ATL para crear componentes COM en C++. |
clases compartidas ATL y MFC | Use clases como CString que se comparten en ATL y MFC. |
Microsoft Foundation Classes (MFC) | Usar MFC para crear aplicaciones de Windows grandes o pequeñas con diálogos y controles |
Acceso a datos | OLE DB y ODBC |
Texto y cadenas | Varios tipos de cadena en Windows. |
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 con DirectX (C++) | Vínculos a contenido para crear juegos en C++. |
Artículos relacionados
Title | Descripción |
---|---|
Desarrollo de Windows | Contiene información sobre la API de Windows y COM. (Algunas API de Windows y archivos DLL de terceros se implementan como objetos COM). |
Hilo: Desarrollo de aplicaciones de C++ para Windows 7 | Describe cómo crear una aplicación de escritorio de Windows de cliente que use animaciones de Windows y Direct2D para crear una interfaz de usuario basada en carrusel. Este tutorial no se ha actualizado desde Windows 7, pero todavía proporciona una introducción exhaustiva a la programación Win32. |
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 de .NET y UWP | Referencia para los elementos de sintaxis compartidos por C++/CX y C++/CLI. |
Aplicaciones universales de Windows (C++) | Escriba aplicaciones para UWP con C++/CX o la biblioteca de plantillas de Windows Runtime (WRL). |
Atributos de C++ para COM y .NET | Atributos no estándar para la programación solo de Windows con .NET o COM. |