Dela via


Windows C++-skrivbordsprogramtyper

Ett skrivbordsprogram i C++ är ett internt program som har åtkomst till hela uppsättningen Windows-API:er och som antingen körs i ett fönster eller i systemkonsolen. Skrivbordsprogram i C++ kan köras på Windows XP via Windows 11 (även om Windows XP inte längre stöds officiellt och det finns många nya Windows-API:er sedan dess).

Alla skrivbordsprogram i C++ kan använda klasser och funktioner för C Runtime (CRT) och StandardBibliotek, COM-objekt och offentliga Windows-funktioner, som tillsammans kallas Windows API. En introduktion till Windows-skrivbordsprogram i C++finns i Komma igång med Win32 och C++.

Det finns flera breda kategorier av Windows-program som du kan skapa med C++, som beskrivs nedan. Var och en har en egen programmeringsmodell och uppsättning Windows-specifika bibliotek. C++-standardbiblioteket och C++-bibliotek från tredje part kan användas i någon av dem.

Dokumentation om själva Windows-plattformen finns i Windows-dokumentationen.

Ursprungliga skrivbordsklientprogram

Ett internt skrivbordsklientprogram, eller Win32-program , är ett Windows-skrivbordsprogram skrivet i C eller C++ som använder inbyggda WINDOWS C-API:er eller COM-API:er (Component Object Model) CRT- och Standard Library-API:er och bibliotek från tredje part. Ett Win32-program som körs i ett fönster kräver att utvecklaren hanterar Windows-meddelanden i en Windows-procedurfunktion. Trots namnet kan ett Win32-program kompileras som en 32-bitars (x86) eller 64-bitars binärfil (x64). I Visual Studio IDE är termerna x86 och Win32 synonyma.

Kommandoradsapplikationer (konsol)

C++-konsolprogram körs från kommandoraden i ett konsolfönster och kan endast visa textutdata.

UWP-applikationer

Universal Windows Platform (UWP) är det moderna Windows-API:et. UWP-appar körs på Windows 11, Windows 10, XBox, Windows Phone, Surface Hub och andra enheter. UWP-appar använder XAML för användargränssnittet och är helt pekaktiverade. Ett skrivbordsprogram skiljer sig från en UWP-app (Universal Windows Platform).

Det ursprungliga C++-stödet för UWP bestod av C++/CX, en dialekt av C++ med syntaxtillägg eller Windows Runtime Library (WRL), som baseras på standard C++ och COM. Både C++/CX och WRL stöds fortfarande, men rekommenderas inte för ny utveckling.

För nya projekt rekommenderar vi C++/WinRT, som helt baseras på C++ standard och ger snabbare prestanda.

Ett C++/CLI-program eller -komponent använder tillägg till C++-syntax (enligt C++ Standard) för att aktivera interaktion mellan .NET och inbyggd C++-kod. Ett C++/CLI-program kan ha delar som körs internt och delar som körs på .NET Framework med åtkomst till .NET Base Class Library. C++/CLI är det bästa alternativet när du har inbyggd C++-kod som måste fungera med kod som skrivits i C# eller Visual Basic. Den är avsedd att användas i .NET DLL:er i stället för i användargränssnittskod.

Skrivbordsbrygga

I Windows 10 och senare kan du paketera ditt befintliga skrivbordsprogram eller COM-objekt som en UWP-app. Den kan använda UWP-funktioner som touch eller anropa API:er från den moderna Windows API-uppsättningen. Du kan också lägga till en UWP-app i en skrivbordslösning i Visual Studio, paketera dem i ett enda paket och använda Windows-API:er för att kommunicera mellan dem.

Med Visual Studio 2017 version 15.4 och senare kan du skapa ett Windows-programpaketprojekt för att avsevärt förenkla arbetet med att paketera ditt befintliga skrivbordsprogram. Några begränsningar gäller för registeranrop eller API:er som ditt skrivbordsprogram kan använda. I många fall kan du dock skapa alternativa kodsökvägar för att uppnå liknande funktioner när du kör i ett apppaket.

C++ eller .NET?

I allmänhet är .NET-programmering i C# mindre komplex, mindre felbenägen och har ett modernare objektorienterat API än Win32 eller MFC. I de flesta fall är dess prestanda mer än tillräcklig.

.NET har Windows Presentation Foundation (WPF) för omfattande grafik, och du kan använda både Win32 och det moderna Windows Runtime-API:et. Som en allmän regel rekommenderar vi att du använder C++ för skrivbordsprogram när du behöver:

  • exakt kontroll över minnesanvändning
  • den största ekonomin i energiförbrukningen
  • användning av GPU för allmän databehandling
  • åtkomst till DirectX
  • tung användning av C++-standardbibliotek

Det går också att kombinera kraften och effektiviteten i C++ med .NET-programmering. Du kan skapa ett användargränssnitt i C# och använda C++/CLI för att göra det möjligt för programmet att använda interna C++-bibliotek.

Spel

DirectX-spel kan köras på datorn eller Xbox.

SQL Server-databasklienter

Om du vill komma åt SQL Server-databaser från inbyggd kod använder du ODBC eller OLE DB.

Windows-enhetsdrivrutiner

Drivrutiner är lågnivåkomponenter som gör data från maskinvaruenheter tillgängliga för program och andra operativsystemkomponenter.

Windows-tjänster

En Windows-tjänst är ett program som kan köras i bakgrunden med liten eller ingen användarinteraktion. Dessa program kallas daemoner i UNIX-system.

COM

Komponentobjektmodellen (COM) är en specifikation som gör det möjligt för program skrivna på olika språk att samverka med varandra.

Många Windows-komponenter implementeras som COM-objekt och följer com-standardreglerna för att skapa objekt, identifiera gränssnitt och förstöra objekt. Det är relativt enkelt att använda COM-objekt från C++-skrivbordsprogram, men det är mer avancerat att skriva egna COM-objekt.

Det aktiva mallbiblioteket (ATL) innehåller makron och hjälpfunktioner som förenklar COM-utveckling. Mer information finns i ATL COM-skrivbordskomponenter.

MFC

Ett MFC-program är ett Windows-skrivbordsprogram som använder Microsoft Foundation-klasserna för att skapa användargränssnittet. Ett MFC-program kan också använda COM-komponenter och CRT- och standardbiblioteks-API:er.

MFC tillhandahåller en tunn C++-objektorienterad omslutning över fönstermeddelandeloopen och Windows-API:er. MFC är standardalternativet för program, särskilt program av företagstyp, som har många användargränssnittskontroller eller anpassade användarkontroller.

MFC tillhandahåller praktiska hjälpklasser för fönsterhantering, serialisering, textmanipulering, utskrift och moderna användargränssnittselement, till exempel menyfliksområdet. För att vara effektiv med MFC bör du vara bekant med Win32.

SDK:er, bibliotek och huvudfiler

Visual Studio innehåller C Runtime Library (CRT), C++ Standard Library och andra Microsoft-specifika bibliotek. De flesta mappar som innehåller huvudfiler för dessa bibliotek finns i Visual Studio-installationskatalogen under mappen \VC\ (till exempel C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.39.33519\include\). Windows- och CRT-huvudfilerna finns i windows SDK-installationsmappen (till exempel C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\ucrt\)

Med vcpkg-pakethanteraren kan du enkelt installera hundratals bibliotek med öppen källkod från tredje part för Windows. Mer information finns i vcpkg.

Microsoft-biblioteken omfattar:

  • Microsoft Foundation-klasser (MFC): Ett objektorienterat ramverk för att skapa traditionella Windows-program , särskilt företagsprogram, som har omfattande användargränssnitt som innehåller knappar, listrutor, trädvyer och andra kontroller. Mer information finns i MFC Desktop-program.

  • Active Template Library (ATL): Ett kraftfullt hjälpbibliotek för att skapa COM-komponenter. Mer information finns i ATL COM Desktop-komponenter.

  • C++ AMP (C++ Accelererad massiv parallellitet): Ett bibliotek som möjliggör allmänt beräkningsarbete med höga prestanda på GPU:n. Mer information finns i C++ AMP (C++ Accelererad massiv parallellitet).

  • Concurrency Runtime-biblioteket: Ett bibliotek som förenklar arbetet med parallell och asynkron programmering för enheter med flera och många kärnor. Mer information finns i Concurrency Runtime.

Många Windows-programmeringsscenarier kräver också Windows SDK, som innehåller huvudfilerna som ger åtkomst till Windows-operativsystemkomponenterna. Som standard installerar Visual Studio Windows SDK som en komponent i C++ Desktop-arbetsbelastningen, vilket möjliggör utveckling av Universella Windows-appar. För att utveckla UWP-appar behöver du en Windows 10- eller senare version av Windows SDK.

  • Mer information och en nedladdningslänk finns i Windows SDK.
  • Mer information om Windows SDK:er för tidigare versioner av Windows finns i Windows SDK-arkivet.

Standardplatsen för alla versioner av Windows SDK som du installerar är: Program Files (x86)\Windows Kits.

Utvecklingsverktyg

Visual Studio innehåller ett kraftfullt felsökningsprogram för inbyggd kod, statiska analysverktyg, verktyg för grafikfelsökning, en fullfjädrad kodredigerare, stöd för enhetstester och många andra verktyg och verktyg.

I det här avsnittet

Länk Beskrivning
Genomgång: Skapa Windows-skrivbordsprogram (C++) Skapa ett internt Windows-skrivbordsprogram.
Anvisningar: Använda Windows SDK i ett Windows-skrivbordsprogram Innehåller steg för att konfigurera ditt projekt för att kompilera med hjälp av Windows SDK.
Genomgång: Skapa ett C++-standardprogram Skapa ett Windows-konsolprogram.
Genomgång: Skapa en konsolkalkylator i C++ Skapa ett enkelt Windows-konsolprogram. Ett Win32-konsolprogram (eller Win64) har inget eget fönster och ingen meddelandeloop. Den körs i konsolfönstret och indata och utdata hanteras via kommandoraden.
Distribuera inbyggda skrivbordsprogram Distribuera inbyggda program i Windows.
Genomgång: Skapa och använda ett statiskt bibliotek Så här skapar du en .lib binär fil.
Windows Desktopassistent Använd guiden för att skapa nya Windows-projekt.
Active Template Library (ATL) Använd ATL-biblioteket för att skapa COM-komponenter i C++.
DELADE ATL- och MFC-klasser Använd klasser som CString som delas i ATL och MFC.
Microsoft Foundation-klasser (MFC) Använda MFC för att skapa stora eller små Windows-program med dialogrutor och kontroller
Dataåtkomst OLE DB och ODBC
Text och strängar Olika strängtyper i Windows.
Arbeta med resursfiler Så här lägger du till bilder, ikoner, strängtabeller och andra resurser i ett skrivbordsprogram.
Resurser för att skapa ett spel med DirectX (C++) Länkar till innehåll för att skapa spel i C++.
Titel Beskrivning
Windows-utveckling Innehåller information om Windows API och COM. (Vissa Windows-API:er och DLL:er från tredje part implementeras som COM-objekt.)
Hilo: Utveckla C++-program för Windows 7 Beskriver hur du skapar ett windows-skrivbordsprogram med rich-client som använder Windows Animation och Direct2D för att skapa ett karusellbaserat användargränssnitt. Handledningen har inte uppdaterats sedan Windows 7, men den ger fortfarande en grundlig introduktion till Win32-programmering.
.NET-utveckling med C++/CLI Skapa omslutningar för interna C++-bibliotek som gör det möjligt att kommunicera med .NET-program och -komponenter.
Komponenttillägg för .NET och UWP Referens för syntaxelement som delas av C++/CX och C++/CLI.
Universella Windows-appar (C++) Skriv UWP-program med C++/CX eller Windows Runtime Template Library (WRL).
C++-attribut för COM och .NET Icke-standardattribut för programmering med endast Windows med hjälp av .NET eller COM.

Se även

C++ i Visual Studio