Tipi di applicazioni desktop Windows C++

Un'applicazione desktop in C++ è un'applicazione nativa che può accedere al set completo di API di Windows e viene eseguita in una finestra o nella console di sistema. Le applicazioni desktop in C++ possono essere eseguite in Windows XP tramite Windows 11 (anche se Windows XP non è più ufficialmente supportato e da allora sono disponibili molte nuove API di Windows).

Qualsiasi applicazione desktop in C++ può usare funzioni e classi di runtime C (CRT) e librerie standard, oggetti COM e funzioni di Windows pubbliche, note collettivamente come API di Windows. Per un'introduzione alle applicazioni desktop di Windows in C++, vedi Introduzione a Win32 e C++.

Esistono diverse categorie generali di applicazioni Windows che è possibile creare con C++, descritte di seguito. Ognuno ha un proprio modello di programmazione e un set di librerie specifiche di Windows. La libreria standard C++ e le librerie C++ di terze parti possono essere usate in qualsiasi libreria.

Per la documentazione sulla piattaforma Windows stessa, vedere la documentazione di Windows.

Applicazioni client desktop native

Un'applicazione client desktop nativa o un'applicazione Win32 è un'applicazione desktop di Windows scritta in C o C++ che usa API C native o API COM (Component Object Model) CRT e librerie standard e librerie di terze parti. Un'applicazione Win32 eseguita in una finestra richiede allo sviluppatore di gestire i messaggi di Windows all'interno di una funzione di routine di Windows. Nonostante il nome, un'applicazione Win32 può essere compilata come binario a 32 bit (x86) o a 64 bit (x64). Nell'IDE di Visual Studio i termini x86 e Win32 sono sinonimi.

Applicazioni della riga di comando (console)

Le applicazioni console C++ vengono eseguite dalla riga di comando in una finestra della console e possono visualizzare solo l'output di testo.

Applicazioni UWP

La piattaforma UWP (Universal Windows Platform) (UWP) è l'API windows moderna. Le app UWP vengono eseguite in Windows 11, Windows 10, XBox, Windows Phone, Surface Hub e altri dispositivi. Le app UWP usano XAML per l'interfaccia utente e sono completamente abilitate per il tocco. Un'applicazione desktop è diversa da un'app UWP (piattaforma UWP (Universal Windows Platform)).

Il supporto C++ originale per UWP è costituito da C++/CX, un dialetto di C++ con estensioni di sintassi o la libreria WRL (Windows Runtime Library), basata su C++ e COM standard. Sia C++/CX che WRL sono ancora supportati, ma non è consigliabile per il nuovo sviluppo.

Per i nuovi progetti, è consigliabile C++/WinRT, interamente basato su C++ standard e offre prestazioni più veloci.

Un'applicazione o un componente C++/CLI usa estensioni per la sintassi C++ (come consentito dallo standard C++) per abilitare l'interazione tra .NET e codice C++nativo. Un'applicazione C++/CLI può avere parti che vengono eseguite in modo nativo e parti eseguite in .NET Framework con accesso alla libreria di classi di base .NET. C++/CLI è l'opzione preferita quando si dispone di codice C++ nativo che deve funzionare con il codice scritto in C# o Visual Basic. È destinato all'uso nelle DLL .NET anziché nel codice dell'interfaccia utente.

Desktop Bridge

In Windows 10 e versioni successive puoi creare un pacchetto dell'applicazione desktop o dell'oggetto COM esistente come app UWP. Può usare funzionalità UWP, ad esempio tocco o chiamare API dal set di API windows moderno. Puoi anche aggiungere un'app UWP a una soluzione desktop in Visual Studio, crearne il pacchetto in un unico pacchetto e usare le API di Windows per comunicare tra di esse.

Visual Studio 2017 versione 15.4 e successive consente di creare un progetto pacchetto di applicazioni Windows per semplificare notevolmente il lavoro di creazione del pacchetto dell'applicazione desktop esistente. Alcune restrizioni si applicano alle chiamate al Registro di sistema o alle API che l'applicazione desktop può usare. Tuttavia, in molti casi è possibile creare percorsi di codice alternativi per ottenere funzionalità simili durante l'esecuzione in un pacchetto dell'app.

C++ o .NET?

In generale, la programmazione .NET in C# è meno complessa, meno soggetta a errori e ha un'API più moderna orientata agli oggetti rispetto a Win32 o MFC. Nella maggior parte dei casi, le prestazioni sono più che adeguate.

.NET offre Windows Presentation Foundation (WPF) per la grafica avanzata ed è possibile utilizzare sia Win32 che l'API moderna di Windows Runtime. Come regola generale, è consigliabile usare C++ per le applicazioni desktop quando necessario:

  • controllo preciso sull'utilizzo della memoria
  • la massima economia nel consumo energetico
  • utilizzo della GPU per il calcolo generale
  • accesso a DirectX
  • uso elevato delle librerie C++ standard

È anche possibile combinare la potenza e l'efficienza di C++ con la programmazione .NET. È possibile creare un'interfaccia utente in C# e usare C++/CLI per consentire all'applicazione di utilizzare librerie C++ native.

Games

I giochi DirectX possono essere eseguiti sul PC o Xbox.

Client di database di SQL Server

Per accedere ai database di SQL Server dal codice nativo, usare ODBC o OLE DB.

Driver di dispositivo Windows

I driver sono componenti di basso livello che rendono i dati dei dispositivi hardware accessibili alle applicazioni e ad altri componenti del sistema operativo.

Servizi Windows

Un servizio di Windows è un programma che può essere eseguito in background con un'interazione minima o nessuna dell'utente. Questi programmi sono denominati daemon nei sistemi UNIX.

  • Per altre informazioni, vedere Servizi.

COM

Component Object Model (COM) è una specifica che consente ai programmi scritti in linguaggi diversi di interagire tra loro.

Molti componenti di Windows vengono implementati come oggetti COM e seguono le regole COM standard per la creazione di oggetti, l'individuazione dell'interfaccia e la distruzione degli oggetti. L'uso di oggetti COM da applicazioni desktop C++ è relativamente semplice, ma la scrittura di un oggetto COM è più avanzata.

Active Template Library (ATL) fornisce macro e funzioni helper che semplificano lo sviluppo COM. Per altre informazioni, vedere Componenti desktop ATL COM.

MFC

Un'applicazione MFC è un'applicazione desktop di Windows che usa le classi Microsoft Foundation per creare l'interfaccia utente. Un'applicazione MFC può anche usare componenti COM e API della libreria standard e CRT.

MFC fornisce un wrapper orientato agli oggetti C++ sottile sul ciclo di messaggi della finestra e sulle API di Windows. MFC è la scelta predefinita per le applicazioni, in particolare le applicazioni di tipo enterprise, con molti controlli dell'interfaccia utente o controlli utente personalizzati.

MFC fornisce classi helper utili per la gestione delle finestre, la serializzazione, la manipolazione del testo, la stampa e gli elementi moderni dell'interfaccia utente, ad esempio la barra multifunzione. Per essere efficace con MFC, dovresti avere familiarità con Win32.

SDK, librerie e file di intestazione

Visual Studio include la libreria C Runtime (CRT), la libreria standard C++ e altre librerie specifiche di Microsoft. La maggior parte delle cartelle che contengono file di intestazione per queste librerie si trovano nella directory di installazione di Visual Studio nella cartella \VC\ (ad esempio, C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.39.33519\include\). I file di intestazione Windows e CRT sono disponibili nella cartella di installazione di Windows SDK (ad esempio, C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\ucrt\)

La gestione pacchetti vcpkg consente di installare facilmente centinaia di librerie open source di terze parti per Windows. Per altre informazioni, vedere vcpkg.

Le librerie Microsoft includono:

  • Microsoft Foundation Classes (MFC): un framework orientato a oggetti per la creazione di programmi Windows tradizionali, in particolare applicazioni aziendali, con interfacce utente avanzate dotate di pulsanti, caselle di riepilogo, visualizzazioni albero e altri controlli. Per altre informazioni, vedere MFC Desktop Applications.

  • Active Template Library (ATL): una libreria helper efficace per la creazione di componenti COM. Per altre informazioni, vedere ATL COM Desktop Components.

  • C++ AMP (C++ Accelerated Massive Parallelism): una libreria che consente attività di elaborazione generale a elevate prestazioni nella GPU. Per altre informazioni, vedere C++ AMP (C++ Accelerated Massive Parallelism).

  • Runtime di concorrenza: una libreria che semplifica le attività di programmazione asincrona e in parallelo per dispositivi multicore e many-core. Per altre informazioni, vedere Concurrency Runtime (Runtime di concorrenza).

Anche molti scenari di programmazione Windows richiedono Windows SDK, che include i file di intestazione che garantiscono l'accesso ai componenti del sistema operativo Windows. Per impostazione predefinita, Visual Studio installa Windows SDK come componente del carico di lavoro Desktop C++, che consente lo sviluppo di app di Windows universali. Per sviluppare app UWP, è necessaria una versione di Windows 10 o successiva di Windows SDK.

  • Per altre informazioni e un collegamento per il download, vedere Windows SDK.
  • Per altre informazioni sugli SDK di Windows per le versioni precedenti di Windows, vedere l'archivio di Windows SDK.

Il percorso predefinito per tutte le versioni di Windows SDK che si installa è: Program Files (x86)\Windows Kits.

Strumenti di sviluppo

Visual Studio include un potente debugger per codice nativo, strumenti di analisi statica, strumenti di debug grafico, un editor di codice completo, supporto per unit test e molti altri strumenti ed utilità.

In questa sezione

Collega Descrizione
Procedura dettagliata: Creazione di applicazioni desktop di Windows (C++) Creare un'applicazione desktop di Windows nativa.
Procedura: Usare Windows SDK in un'applicazione desktop di Windows Contiene i passaggi per configurare il progetto da compilare con Windows SDK.
Procedura dettagliata: Creare un programma C++ standard Creare un'applicazione console di Windows.
Procedura dettagliata: Creare una calcolatrice della console in C++ Creare una semplice applicazione console di Windows. Un'applicazione console Win32 (o Win64) non ha una finestra specifica e non può attivare un ciclo di messaggi. Viene eseguita nella finestra della console e l'input e l'output vengono gestiti tramite la riga di comando.
Distribuzione di applicazioni desktop native Distribuire applicazioni native in Windows.
Procedura dettagliata: Creazione e uso di una libreria statica Come creare un .lib file binario.
Creazione guidata applicazione desktop di Windows Usare la procedura guidata per creare nuovi progetti Windows.
Active Template Library (ATL) Usare la libreria ATL per creare componenti COM in C++.
Classi CONDIVISE ATL e MFC Usare classi come CString quelle condivise in ATL e MFC.
Microsoft Foundation Classes (MFC) Usare MFC per creare applicazioni Windows di grandi o piccole dimensioni con finestre di dialogo e controlli
Accesso ai dati OLE DB e ODBC
Testo e stringhe Vari tipi di stringa in Windows.
Uso dei file di risorse Come aggiungere immagini, icone, tabelle di stringhe e altre risorse a un'applicazione desktop.
Risorse per la creazione di un gioco con DirectX (C++) Collegamenti al contenuto per la creazione di giochi in C++.
Posizione Descrizione
Sviluppo di Windows Contiene informazioni sull'API Windows e COM. Alcune API Windows e DLL di terze parti vengono implementate come oggetti COM.
Hilo: Sviluppo di applicazioni C++ per Windows 7 Descrive come creare un'applicazione desktop di Windows rich-client, che usa librerie di animazioni Windows e Direct2D per creare un'interfaccia utente basata su sequenze. Questa esercitazione non è stata aggiornata da Windows 7, ma fornisce comunque un'introduzione completa alla programmazione Win32.
Sviluppo in .NET con C++/CLI Creare wrapper per librerie C++ native che lo consentono di comunicare con applicazioni e componenti .NET.
Estensioni componenti per .NET e UWP Informazioni di riferimento sugli elementi della sintassi condivisi da C++/CX e C++/CLI.
App di Windows universali (C++) Scrivere applicazioni UWP usando C++/CX o la libreria di modelli di Windows Runtime (WRL).
Attributi di C++ per COM e .NET Attributi non standard per la programmazione solo Windows tramite .NET o COM.

Vedi anche

C++ in Visual Studio