c - Hvordan starter jeg programmering af grafiske Windows-programmer?

Indlæg af Hanne Mølgaard Plasc

Problem



Efter et par minutter med at søge, har jeg lært, at Win32 API er den laveste måde at skrive grafiske Windows-programmer på. Er det sandt? Er der en måde at tegne ting direkte på videobufferen? Hvordan skriver demo-kodere demoer ?


Anyway, jeg kender en smule C, som synes at være den foretrukne måde at skrive Win32-programmer på, og jeg er interesseret i at holde fast på den lavest mulige og mest fleksible måde at skrive Windows-programmer på.


Jeg har hørt om mange forskellige rammer lige fra Microsoft selv. NET, Windows Forms, WPF, MFC, WTL, CLR, ATL. (Kan nogen præcisere, hvilken af ​​disse faktisk afhænger af en anden?)


Så er der selvfølgelig tværplatformsværktøjerne, WxWidgets, GTK, Qt, Mono, tk osv.


Hvad hvis jeg bare vil skrive en hel grænseflade i OpenGL?
Er alt virkelig afhængig af Win32 API?
Skal jeg skrive nogle kode, der bruger Win32 API-opkald til i det mindste at oprette et vindue til OpenGL at bruge?

Bedste reference


Du har stort set stillet så mange spørgsmål i et spørgsmål, at jeg ikke helt sikkert ved, hvad du vil. Men jeg vil gøre mit bedste for at gøre rimelige antagelser og besvare alle dine spørgsmål kort.


Win32 API er ikke kun det laveste niveau API til grafiske programmer, men til et hvilket som helst vindueprogram. Det er tættest på kernen, men det er ikke nødvendigt at skrive i det.


Jeg antager her, at du vil lave en grafisk dekorativ app.


Win32 API har en komponent, kaldet GDI, Graphic Device Interface, som du kan bruge til at interagere med grafiske buffere, men det er smerteligt langsomt. Så så kan du bruge OpenGL eller DirectX. Også MFC var før .NET, du brugte det til at oprettede standard Windows GUI programmer. Så kom. NET, mere langsomme, men lidt bedre designet.


Og ja, der er mange Cross Platform-muligheder, som du nævnte, kan du også bruge dem, men alt afhænger af, hvad du forsøger at gøre.


Nu, hvis du vil skrive en ren grafisk app, som spil eller fancy demoer med skinnende grafik, skal du virkelig ikke bekymre dig om Win32, MFC, .NET osv., Fordi når du vil oprette en sådan app, bruger du kun et minimum af Win32 at oprette et skelet vindue, og derefter overtager din OpenGL eller DirectX kontrol.
Men selvfølgelig, hvis det er et vindue app, vil det helt sikkert bruge Win32 API et sted der nede, ikke at du skal bekymre sig om det selvom :)

Andre referencer 1


Du kan bruge biblioteket kaldet GLUT, hvis hele applikationen skal være OpenGL.


http://www.opengl.org/resources/libraries/glut/[1]

Andre referencer 2


Ja, Win32 er det laveste niveau API. Det wraps alle OS-objekter og API, samt udsætter vinduet API, så du kan oprette dit OpenGL-vindue osv. Alt andet er bygget oven på det.


Du kan ikke tegne direkte til videohukommelse som en demo-koder på en Amiga 500; du har ikke været i stand til sikkert at få en pointer til video output buffer siden midten af ​​90'erne ved hjælp af DOS. :)


Hvis du vil lære Windows på det laveste niveau, i C, få en kopi af Programmering Windows af Charles Petzold. Det har absolut alt hvad du behøver. [2]


Hvis alt du vil, er at åbne et vindue for at sætte GL-kode ind, skal du nemt finde vejledninger til det.

Andre referencer 3


Du skal certificere nogle ting til at oprette Windows-applikation (registrere vinduesklasse osv.). Når du har oprettet din app klasse, er du fri til at gøre hvad du vil. Du kan dog ikke have direkte adgang til videohukommelse (hvilket er godt), men der er DirectX og OpenGL til dig.