Hoe kan ik GUI-programmering in C doen?

Ik wil grafische programmering doen in C. Ik had veel gezocht over de compiler die een rijke set functies biedt voor het doen van GUI-programmering in C, maar ik kon niets vinden.

In principe wil ik knoppen tekenen en vervolgens de keuze van de gebruiker accepteren en een passende actie ondernemen. Het zou nuttig zijn als u een C-compiler of een bibliotheek kunt voorstellen die ik aan mijn compiler kan toevoegen. Ik werk aan het Windows-besturingssysteem.

Momenteel gebruik ik Turbo C-compiler die geen directe methoden ondersteunt voor het maken van knoppen. Elke hulp zou worden op prijs gesteld.


Antwoord 1, Autoriteit 100%

Dit heeft gegarandeerd niets te maken met de compiler. Alle compilers doen dat de code die ze hebben gegeven compileren. Waar u naar op zoek bent, is een GUI-bibliotheek, die u code kunt schrijven tegen het gebruik van een compiler die u wilt.

Natuurlijk, dat gezegd hebbende, moet je eerste deel van het bedrijf zijn om Turbo C te sloot te worden, dat compiler ongeveer 20 jaar oud is en blijft gebruiken, het doet je geen gunsten. U kunt Modern GUI-toepassingen niet schrijven, omdat deze slechts 16-bits code produceert. Alle moderne besturingssystemen zijn 32-bits, en velen zijn nu 64-bits. Het is ook vermeldenswaard dat 64-bit edities van Windows geen 16-bits applicaties zullen uitvoeren. Daar heb je een emulator voor nodig; Het gaat niet echt veel gevoel van voldoening aanzetten als je alleen apps kunt schrijven die in een DOS-emulator werken. : -)

Microsoft’s Visual Studio Express C++ is beschikbaar als een gratis download . Het bevat dezelfde compiler die verkrijgbaar is in de volledige versie van de suite. Het C++ -pakket compileert ook pure C-code.

En aangezien u in Windows werkt, is de Windows API een logische keuze. Hiermee kunt u native Windows-toepassingen schrijven die toegang hebben tot de volledige set GUI-besturingselementen. Je vindt een mooie tutorial hierover het schrijven van WinAPI-applicaties in C. Als je kiest om bij Visual Studio te passen, bevat het ook boilerplate-code voor een lege WinAPI-toepassing waarmee u snel aan de slag kunt.

Als je dit echt wilt leren, is Programmeer Windowsvan Charles Petzold de canonieke bron van het onderwerp, en zeker de moeite waard om te lezen. De volledige Windows API is geschreven in C, en het is heel goed mogelijk om Windows-applicaties met volledige functionaliteit in C te schrijven. Je hebt geen stinkende C++ nodig.

Zo zou ikhet tenminste doen. Zoals de andere antwoorden suggereren, is GTKook een optie. Maar de applicaties die het genereert zien er ronduit verschrikkelijk uit op Windows.


EDIT:het lijkt erop dat u niet de enige bent die “GUI”-toepassingen wil schrijven met een verouderde compiler. Een Google-zoekopdracht levert de volgende bibliotheek op: TurboGUI : Een GUI Framework voor Turbo C/C++:

 

Als je Turbo C moet gebruiken, kan dit een optie zijn.


Antwoord 2, autoriteit 12%

De bekendste bibliotheek om een GUI in C-taal te maken, is zeker GTK.

Met deze bibliotheek kunt u eenvoudig enkele knoppen maken (voor uw voorbeeld). Wanneer een gebruiker op de knop klikt, wordt er een signaal uitgezonden en kunt u een handler schrijven om enkele acties uit te voeren.


Antwoord 3, autoriteit 6%

Gebruik win-API’s in uw hoofdfunctie:

  1. RegisterClassEx()opmerking : je moet een verwijzing naar een functie geven (meestal WndProc) die windows-berichten zoals WM_CREATE, WM_COMMAND enz.
  2. CreateWindowEx()
  3. ShowWindow()
  4. UpdateWindow()

Schrijf dan een andere functie die de berichten van win afhandelt (vermeld in #1). Wanneer u het bericht WM_CREATE ontvangt, moet u CreateWindow() aanroepen. De klasse is wat controle is dat venster, bijvoorbeeld “bewerken” is een tekstvak en “knop” is een.. knop :). U moet voor elk besturingselement een ID opgeven (naar keuze maar uniek onder alle). CreateWindow() retourneert een handle naar dat besturingselement, dat moet worden onthouden. Wanneer de gebruiker op een besturingselement klikt, ontvangt u het WM_COMMAND-bericht met de ID van dat besturingselement. Hier regel je dat evenement. Misschien vindt u SetWindowText()nuttig en GetWindowText()waarmee u om de tekst van een besturingselement in te stellen/op te halen.
U hebt alleen de win32 SDK nodig. Je kunt het hierkrijgen.


Antwoord 4, autoriteit 5%

C is meer een hardware-programmeertaal, er zijn eenvoudige GUI-bouwers voor C, GTK, Glade, enz. Het probleem is om een programma in C te maken dat het makkelijke deel is, een GUI te maken dat een gemakkelijk deel is, het het moeilijkste is om beide te combineren, om te communiceren tussen je programma en de GUI is hoofdpijn, en verschillende GUI’s gebruiken verschillende manieren, sommige gooiden globale variabelen, sommige gebruiken slots. Het zou leuk zijn om een GUI-builder te hebben die gemakkelijk je C-programmavariabelen en outputs zou binden. CLI-programmering is eenvoudig als u geheugentoewijzing en aanwijzers overwint, GUI kunt u een IDE gebruiken die slepen en neerzetten gebruikt. Maar overal denk ik dat het eenvoudiger kan.


Antwoord 5, autoriteit 3%

Een C-compiler zelf biedt je geen GUI-functionaliteit, maar er zijn genoeg bibliotheken voor dat soort dingen. De meest populaire is waarschijnlijk GTK+, maar het kan een beetje te ingewikkeld zijn als je net begint en wilt snel een GUI in gebruik nemen.

Voor iets eenvoudigers raad ik IUPaan. Hiermee kun je een eenvoudige GUI-definitietaal genaamd LED gebruiken voor lay-outbesturingen (maar je kunt het doen met pure C, als je dat wilt).


Antwoord 6, autoriteit 3%

Windows APIen Windows SDKals je alles zelf wilt bouwen (of) Windows APIen Visual C Express. Download de 2008-editie. Dit is een complete IDE en een opmerkelijk stuk software van Microsoft voor de ontwikkeling van Windows.

Alle besturingssystemen zijn geschreven in C. Dus elke toepassing, console/GUI die u in C schrijft, is de standaardmanier van schrijven voor het besturingssysteem.

Other episodes