windows - Hvordan kan jeg lave GUI programmering i C?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg vil gerne lave Graphics programmering i C. Jeg havde søgt meget om kompilatoren, der giver et rigt sæt funktioner til at gøre GUI programmering i C, men jeg kunne ikke finde noget.


Dybest set vil jeg tegne knapper og derefter acceptere valget fra brugeren og træffe en passende handling. Det ville være nyttigt, hvis du kan foreslå en C-kompilator eller et bibliotek, som jeg kan tilføje til min compiler. Jeg arbejder på Windows-operativsystemet.


I øjeblikket bruger jeg TURBO C compiler, der ikke understøtter direkte metoder til oprettelse af knapper. Enhver hjælp ville blive værdsat.

Bedste reference


Dette er garanteret at have intet at gøre med kompilatoren. Alle kompilatorer gør, er kompilere den kode, de er givet. Hvad du leder efter, er et GUI-bibliotek, som du kan skrive kode mod ved brug af en compiler, du vil have.


Selvfølgelig skal du sige, at din første rækkefølge bør være at dulke Turbo C. At kompilatoren er omkring 20 år gammel og fortsætter med at bruge det, er ikke til gavn. Du kan ikke skrive moderne GUI-applikationer, da det kun producerer 16-bit kode. Alle moderne operativsystemer er 32-bit, og mange er nu 64-bit. Det er også værd at bemærke, at 64-bit udgaver af Windows ikke vil køre 16-bit applikationer indbygget. Du har brug for en emulator til det; det kommer ikke rigtig til at skabe en stor følelse af resultater, hvis du kun kan skrive apps, der arbejder i en DOS-emulator. :-)


Microsoft Visual Studio Express C ++ er tilgængelig som en gratis download. Den indeholder den samme kompilator, der er tilgængelig i den fulde version af pakken. C ++-pakken indeholder også ren C-kode. [1]


Og siden du arbejder i Windows, er Windows API et naturligt valg. Det giver dig mulighed for at skrive native Windows-applikationer, der har adgang til det komplette sæt GUI-kontroller. Du finder en god tutorial her ved at skrive WinAPI-programmer i C . Hvis du vælger at gå med Visual Studio, indeholder den også boilerplate-kode til et tomt WinAPI-program, der får dig hurtigt i gang. [2]


Hvis du virkelig bekymrer dig om at lære at gøre dette, er Charles Petzolds programmeringsvinduer den kanoniske ressource af emnet, og det er absolut værd at læse. Hele Windows API blev skrevet i C, og det er helt muligt at skrive fuldt ud Windows-programmer i C. Du behøver ikke stinkin 'C ++.' [3]


Det er den måde jeg 'd gør det, i det mindste. Som de andre svar tyder på, er GTK også en mulighed. Men de applikationer, det genererer, er bare ret horrible-ser på Windows. [4]





EDIT: Åh kære ... Det ser ud som om du ikke er alene for at skrive 'GUI' -programmer ved hjælp af en forældet compiler. En Google-søgning viser følgende bibliotek: TurboGUI: En GUI Framework for Turbo C/C ++: [5]


  TurboGUI-grænsefladeprøve


Hvis du er en anden af ​​de fattige mennesker, der sidder fast i det håbløst forældede indiske skolesystem og tvunget til at bruge Turbo C til at fuldføre din uddannelse, kan det være en mulighed. Jeg vil gerne anbefale det som at lære at arbejde omkring sine begrænsninger vil være helt ubrugelige til dig, når du er færdiguddannet, men tilsyneladende er det derude for dig, hvis du er interesseret.

Andre referencer 1


Det mest berømte bibliotek til at oprette nogle GUI'er på C-sprog er bestemt GTK. [6]


Med dette bibliotek kan du nemt oprette nogle knapper (til dit eksempel). Når en bruger klikker på knappen, udsender et signal, og du kan skrive en handler for at gøre nogle handlinger.

Andre referencer 2


Brug win API'er i din hovedfunktion:



  1. RegisterClassEx () note: Du skal give en peger til en funktion (normalt kaldet WndProc), som håndterer Windows-meddelelser som WM\_CREATE, WM\_COMMAND osv.

  2. CreateWindowEx ()

  3. ShowWindow ()

  4. UpdateWindow ()



Skriv derefter en anden funktion, der håndterer vindens meddelelser (nævnt i nr. 1). Når du modtager meddelelsen WM\_CREATE, skal du ringe CreateWindow (). Klassen er hvilken kontrol er det vindue, for eksempel er 'edit' en tekstboks og 'knap' er en .. knap :). Du skal angive et id for hver kontrol (af dit valg, men unikt blandt alle). CreateWindow () returnerer et håndtag til den kontrol, som skal gemmes. Når brugeren klikker På en kontrol modtager du WM\_COMMAND beskeden med ID for den kontrol. Her kan du håndtere den begivenhed. Du kan finde nyttige SetWindowText () og GetWindowText (), som giver dig mulighed for at indstille/få teksten til enhver kontrol.

Du skal kun bruge win32 SDK. Du kan få det her. [7] [8] [9] [10] [11] [12] [13] [14]

Andre referencer 3


C er mere af et hardware programmeringssprog, der er nemme GUI builders til C, GTK, Glade osv. Problemet er at lave et program i C, det er den nemme del, der gør en GUI, der er en let del, den hårde del er at kombinere begge, at interface mellem dit program og GUI er en hovedpine, og forskellige GUI bruger forskellige måder, nogle kastede globale variabler, nogle bruger slots. Det ville være rart at have en GUI-bygherre, der nemt ville binde dine C-programvariabler og output. CLI programmering er let, når du overvinder hukommelsesallokering og peger, GUI kan du bruge en IDE, der bruger træk og slip. Men rundt omkring synes jeg det kunne være enklere.

Andre referencer 4


AC kompilatoren selv vil ikke give dig GUI-funktionalitet, men der er masser af biblioteker til den slags ting. Det mest populære er nok GTK +, men det kan være lidt for kompliceret, hvis du lige starter ud og vil hurtigt få en GUI op og kører. [15]


For noget lidt enklere, vil jeg anbefale IUP. Med det kan du bruge et enkelt GUI definition sprog kaldet LED til layout kontroller (men du kan gøre det med ren C, hvis du vil). [16]

Andre referencer 5


Windows API og Windows SDK , hvis du vil opbygge alt selv (eller) Windows API og Visual C Express . Få 2008-udgaven. Dette er et fuldt blæst IDE og et bemærkelsesværdigt stykke software af Microsoft til Windows udvikling.


Alle operativsystemer er skrevet i C. Så alle programmer, konsoller/GUI'er du skriver i C er standard måde at skrive til operativsystemet.