Tipos de aplicativos de área de trabalho do Windows C++

Um aplicativo de área de trabalho em C++ é um aplicativo nativo que pode acessar o conjunto completo de APIs do Windows e é executado em uma janela ou no console do sistema. Os aplicativos de área de trabalho em C++ podem ser executados no Windows XP até o Windows 11 (embora o Windows XP não tenha mais suporte oficial e existam muitas APIs novas do Windows desde então).

Qualquer aplicativo de área de trabalho no C++ pode usar o CRT (C Runtime) e as classes e funções da Biblioteca padrão, objetos COM e as funções públicas do Windows, que coletivamente são conhecidas como API do Windows. Para obter uma introdução aos aplicativos para desktop do Windows no C++, consulte Introdução ao Win32 e ao C++.

Há várias categorias amplas de aplicativos do Windows que podem ser criados com o C++, descritas abaixo. Cada uma delas tem seu próprio modelo de programação e um conjunto de bibliotecas específicas do Windows. A biblioteca padrão do C++ e as bibliotecas C++ de terceiros podem ser usadas em qualquer uma delas.

Para obter documentação na própria plataforma do Windows, confira a Documentação do Windows.

Aplicativos cliente de área de trabalho nativos

Um aplicativo cliente de área de trabalho nativo, ou aplicativo Win32, é um aplicativo de área de trabalho do Windows escrito em C ou C++ que usa APIs C nativas do Windows ou as APIs do Component Object Model (COM), CRT e APIs da Biblioteca Standard e bibliotecas de terceiros. Um aplicativo Win32 executado em uma janela exige que o desenvolvedor manipule mensagens do Windows dentro de uma função de procedimento do Windows. Apesar do nome, um aplicativo Win32 pode ser compilado como um binário de 32 bits (x86) ou 64 bits (x64). No IDE do Visual Studio, os termos x86 e Win32 são sinônimos.

Aplicativos de linha de comando (console)

Os aplicativos de console C++ são executados na linha de comando em uma janela do console e podem exibir somente a saída de texto.

Aplicativos UWP

A UWP (Plataforma Universal do Windows) é a API moderna do Windows. Os aplicativos UWP são executados no Windows 11, Windows 10, XBox, Windows Phone, Surface Hub e outros dispositivos. Os aplicativos UWP usam XAML para a interface do usuário e são totalmente habilitados para toque. Um aplicativo de área de trabalho é diferente de um aplicativo da Plataforma Universal do Windows (UWP).

O suporte original a C++ para UWP consistia em C++/CX, um dialeto de C++ com extensões de sintaxe, ou a Biblioteca do Windows Runtime (WRL), que é baseada em C++ padrão e COM. C++/CX e WRL ainda têm suporte, mas não são recomendados para um novo desenvolvimento.

Para novos projetos, recomendamos C++/WinRT, que é inteiramente baseado no C++ padrão e fornece desempenho mais rápido.

Um aplicativo ou componente C++/CLI usa extensões para sintaxe C++ (conforme permitido pelo C++ Standard) para habilitar a interação entre o código .NET e o C++nativo. Um aplicativo C++/CLI pode ter partes que são executadas nativamente e partes executadas no .NET Framework com acesso à Biblioteca de classes base do .NET. C++/CLI é a opção preferencial quando você tem código C++ nativo que precisa trabalhar com código escrito em C# ou Visual Basic. Destina-se ao uso em DLLs .NET e não no código da interface do usuário.

Ponte de Desktop

No Windows 10 e posteriores, você pode empacotar seu aplicativo para desktop ou objeto COM existente como um aplicativo UWP. Ele pode usar recursos de UWP, como toque, ou chamar APIs do conjunto moderno de APIs do Windows. Você também pode adicionar um aplicativo UWP a uma solução de desktop no Visual Studio, reuni-los juntos em um único pacote e usar APIs do Windows para se comunicar entre eles.

O Visual Studio 2017 versão 15.4 e posterior permite criar um Projeto de pacote de aplicativos do Windows para simplificar consideravelmente o trabalho de empacotamento do aplicativo para desktop existente. Algumas restrições se aplicam às chamadas do Registro ou APIs que seu aplicativo para desktop pode usar. No entanto, em muitos casos, você pode criar caminhos de código alternativos para obter funcionalidades semelhantes durante a execução em um pacote do aplicativo.

C++ ou .NET?

Em geral, a programação do .NET em C# é menos complexa, menos propensa a erros e tem uma API mais moderna orientada a objetos do que Win32 ou MFC. Na maioria dos casos, seu desempenho é mais do que adequado.

O .NET apresenta o Windows Presentation Foundation (WPF) para elementos gráficos avançados, e você pode consumir o Win32 e a API de Windows Runtime moderna. Como regra geral, recomendamos o uso do C++ para aplicativos para desktop quando você precisar de:

  • controle preciso sobre o uso da memória
  • economia mais extrema no consumo de energia
  • uso da GPU para computação geral
  • acesso ao DirectX
  • uso intenso de bibliotecas C++ padrão

Também é possível combinar a potência e a eficiência do C++ com a programação do .NET. Você pode criar uma interface do usuário em C# e usar C++/CLI para permitir que o aplicativo consuma bibliotecas C++ nativas.

Jogos

Jogos do DirectX podem ser executados no PC ou no Xbox.

Clientes de banco de dados SQL Server

Para acessar bancos de dados SQL Server de código nativo, use ODBC ou OLE DB.

Drivers de dispositivos Windows

Os drivers são componentes de baixo nível que tornam os dados de dispositivos de hardware acessíveis para aplicativos e outros componentes do sistema operacional.

Serviços do Windows

Um serviço do Windows é um programa que pode ser executado em segundo plano com pouca ou nenhuma interação do usuário. Esses programas são chamados de daemons em sistemas UNIX.

  • Para obter mais informações, consulte Serviços.

COM

O Component Object Model (COM) é uma especificação que permite a interoperação de programas escritos em diferentes linguagens.

Muitos componentes do Windows são implementados como objetos COM e seguem regras COM padrão para criação de objeto, descoberta de interface e destruição de objetos. Usar objetos COM de aplicativos para desktop C++ é relativamente simples, mas escrever seu próprio objeto COM é mais avançado.

A ATL (Active Template Library) fornece macros e funções auxiliares que simplificam o desenvolvimento de COM. Para obter mais informações, consulte Componentes para desktop COM da ATL.

MFC

Um aplicativo MFC é um aplicativo de área de trabalho do Windows que usa o Microsoft Foundation Classes para criar a interface do usuário. Um aplicativo MFC também pode usar componentes COM e APIs de Biblioteca Standard e CRT.

O MFC fornece um wrapper orientado a objeto C++ fino sobre o loop de mensagem de janela e as APIs do Windows. O MFC é a opção padrão para aplicativos, especialmente aplicativos do tipo corporativo, que têm muitos controles de interface de usuário ou controles de usuário personalizados.

O MFC fornece classes auxiliares convenientes para gerenciamento de janelas, serialização, manipulação de texto, impressão e elementos de interface do usuário modernos, como a faixa de opções. Para ser eficiente com o MFC, você deve estar familiarizado com o Win32.

SDKs, bibliotecas e arquivos de cabeçalho

O Visual Studio inclui a CRT (C Runtime Library), a C++ Standard Library e outras bibliotecas específicas da Microsoft. A maioria das pastas que contêm arquivos de cabeçalho para essas bibliotecas está localizada no diretório de instalação do Visual Studio, na pasta \VC\ (por exemplo, C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.39.33519\include\). Os arquivos de cabeçalho do Windows e CRT encontram-se na pasta de instalação do SDK do Windows (por exemplo, C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\ucrt\)

O gerenciador de pacotes vcpkg permite que você instale convenientemente centenas de bibliotecas de código aberto de terceiros para Windows. Para obter mais informações, confira vcpkg.

As bibliotecas da Microsoft incluem:

  • Microsoft Foundation Classes (MFC): uma estrutura orientada por objeto para criação de programas tradicionais do Windows (especialmente aplicativos empresariais) que têm interfaces de usuário avançadas que apresentam botões, caixas de listagem, modos de exibição de árvore e outros controles. Para obter mais informações, confira Aplicativos para desktop MFC.

  • Active Template Library (ATL): uma biblioteca auxiliar potente para criação de componentes COM. Para obter mais informações, consulte Componentes para desktop COM da ATL.

  • C++ AMP (C++ Accelerated Massive Parallelism): uma biblioteca que permite trabalho computacional geral de alto desempenho na GPU. Para obter mais informações, consulte C++ AMP (C++ Accelerated Massive Parallelism).

  • Runtime de Simultaneidade: uma biblioteca que simplifica o trabalho da programação paralela e assíncrona para dispositivos de vários e muitos núcleos. Para obter mais informações, consulte Runtime de Simultaneidade.

Muitos cenários de programação do Windows também exigem o Windows SDK, que inclui os arquivos de cabeçalho que permitem acesso aos componentes do sistema operacional Windows. Por padrão, o Visual Studio instala o SDK do Windows como um componente da carga de trabalho de desktop do C++, que permite o desenvolvimento de aplicativos universais do Windows. Para desenvolver aplicativos UWP, você precisa de uma versão Windows 10 ou posterior do SDK do Windows.

  • Para obter mais informações e um link de download, consulte o SDK do Windows.
  • Para obter mais informações sobre os SDKs do Windows para versões anteriores do Windows, consulte o arquivo do SDK do Windows..

O local padrão para todas as versões do SDK do Windows que você instala é: Program Files (x86)\Windows Kits.

Ferramentas de desenvolvimento

O Visual Studio inclui um depurador potente para código nativo, ferramentas de análise estática, ferramentas de depuração gráfica, um editor de código com recursos completos, suporte para testes de unidade e muitos outros utilitários e ferramentas.

Nesta seção

Link Descrição
Passo a passo: Criando aplicativos de área de trabalho do Windows (C++) Crie um aplicativo nativo de desktop do Windows.
Como fazer: Usar o SDK do Windows em um aplicativo de área de trabalho do Windows Contém etapas para configurar o projeto a ser criado usando o SDK do Windows.
Passo a passo: Criar um programa C++ padrão Crie um projeto de aplicativo de console do Windows.
Passo a passo: Criar uma calculadora de console em C++ Criar um aplicativo simples de console do Windows. Um aplicativo de console Win32 (ou Win64) não tem nenhuma janela própria nem um loop de mensagem. Ele é executado na janela do console, e a entrada e a saída são tratadas por meio da linha de comando.
Implementação de aplicativos de área de trabalho nativos Implante aplicativos nativos no Windows.
Passo a passo: Criando e usando uma biblioteca estática Como criar um arquivo binário .lib.
Assistente da Área de Trabalho do Windows Use o assistente para criar novos projetos do Windows.
ATL (Active Template Library) Use a biblioteca ATL para criar componentes COM no C++.
Classes compartilhadas ATL e MFC Use classes como CString que são compartilhadas em ATL e MFC.
MFC (Microsoft Foundation Classes) Usar o MFC para criar aplicativos windows grandes ou pequenos com diálogos e controles
Acesso a dados OLE DB e ODBC
Texto e cadeias de caracteres Vários tipos de cadeia de caracteres no Windows.
Como trabalhar com arquivos de recurso Como adicionar imagens, ícones, tabelas de cadeia de caracteres e outros recursos a um aplicativo para desktop.
Recursos para criar um jogo usando o DirectX (C++) Links para conteúdo para criação de jogos em C++.
Título Descrição
Desenvolvimento para Windows Contém informações sobre a API do Windows e COM. (Algumas APIs do Windows e DLLs de terceiros são implementadas como objetos COM.)
Hilo: Desenvolvendo aplicativos C++ para Windows 7 Descreve como criar um aplicativo para desktop do Windows com cliente avançado que usa a Animação do Windows e Direct2D para criar uma interface do usuário baseada em carrossel. Esse tutorial não foi atualizado desde o Windows 7, mas ainda oferece uma introdução completa à programação Win32.
Desenvolvimento .NET com C++/CLI Crie wrappers para bibliotecas C++ nativas que permitem a comunicação com aplicativos e componentes do .NET.
Extensões de componentes para .NET e UWP Referência para elementos de sintaxe compartilhados por C++/CX e C++/CLI.
Aplicativos universais do Windows (C++) Escreva aplicativos UWP usando C++/CX ou WRL (Biblioteca de Modelos de Windows Runtime).
Atributos C++ para COM e .NET Atributos não padrão para programação somente para Windows usando .NET ou COM.

Confira também

C++ no Visual Studio