Interfaccia Grafica In C

Stato
Discussione chiusa ad ulteriori risposte.

JDany

Utente Attivo
461
24
CPU
Ryzen 9 3900x
Scheda Madre
ASUS H170-Pro
RAM
Corsair Vengeance LPX 2x8 GB
GPU
ZOTAC RTX 3070 TWIN EDGE OC
Monitor
Philips Gaming Monitor 24"
PSU
Corsair CX450M
Case
Sharkoon VS4-V
OS
Windows 11 Pro
Salve. Sono nuovo a programmare in C. So fare cose basilari, esempio usare istruzioni come if-else, switch, dichiarare variabili e stamparle a video. L'unico problema è che non mi piace che ogni volta che eseguo, anche un semplice programma, si apre nel DOS di Windows. Vorrei usare un'interfaccia grafica, anche una già creata, anche per studiare il codice. Solo che non trovo nulla online, tutti dicono la stessa cosa, cioè che è difficile, usa programmi come visual di MS. Voi sapete dove trovare un codice per una "semplice" interfaccia grafica? Per programmare uso DevC++.
 

SoWimDP31Plus

Nuovo Utente
10
1
"Semplice", "GUI" e "C" non possono stare nella stessa frase.
No, seriamente, avevo il tuo stesso dubbio l'anno scorso, quando abbiamo iniziato a farlo a scuola. Ad oggi ti posso dire che tutti sconsigliano le GUI su C proprio per la difficoltà nel crearle.


(se vuoi fare piccole interfacce grafiche, il modo più facile è Java + NetBeans)

Inviato da Redmi 5 Plus tramite App ufficiale di Tom\'s Hardware Italia Forum
 
U

Utente 125751

Ospite
"Semplice", "GUI" e "C" non possono stare nella stessa frase.
No, seriamente, avevo il tuo stesso dubbio l'anno scorso, quando abbiamo iniziato a farlo a scuola. Ad oggi ti posso dire che tutti sconsigliano le GUI su C proprio per la difficoltà nel crearle.


(se vuoi fare piccole interfacce grafiche, il modo più facile è Java + NetBeans)

Inviato da Redmi 5 Plus tramite App ufficiale di Tom\'s Hardware Italia Forum

Invece in C++ oppure in C#?
 

SoWimDP31Plus

Nuovo Utente
10
1
"Semplice", "GUI" e "C" non possono stare nella stessa frase.
No, seriamente, avevo il tuo stesso dubbio l'anno scorso, quando abbiamo iniziato a farlo a scuola. Ad oggi ti posso dire che tutti sconsigliano le GUI su C proprio per la difficoltà nel crearle.


(se vuoi fare piccole interfacce grafiche, il modo più facile è Java + NetBeans)

Inviato da Redmi 5 Plus tramite App ufficiale di Tom\'s Hardware Italia Forum

Invece in C++ oppure in C#?
Eh,qualcosina li si può trovare....
Purtroppo però a scuola fanno il C classico, non ti so dire, mai fatto il ++ o il #

Inviato da Redmi 5 Plus tramite App ufficiale di Tom\'s Hardware Italia Forum
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,210
1,845
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
Salve. Sono nuovo a programmare in C. So fare cose basilari, esempio usare istruzioni come if-else, switch, dichiarare variabili e stamparle a video. L'unico problema è che non mi piace che ogni volta che eseguo, anche un semplice programma, si apre nel DOS di Windows. Vorrei usare un'interfaccia grafica, anche una già creata, anche per studiare il codice. Solo che non trovo nulla online, tutti dicono la stessa cosa, cioè che è difficile, usa programmi come visual di MS. Voi sapete dove trovare un codice per una "semplice" interfaccia grafica? Per programmare uso DevC++.
Mi permetto di suggerirti di lasciar perdere le GUI al momento allora.
In primis, quando si Impara, si devono evitare tools per creare le GUI, che sia per Java o C++ o altro.
Alcune scelte comunque sono: SFML, GTK+, SDL2. Ti suggerivo di proseguire nello studio del C in quanto ti mancano concetti fondamentali - a quanto si evince - per poter utilizzare queste librerie; un esempio su tutti, i puntatori.

@Cibachrome: con C++ è analogo, ma hai ad esempio anche WxWidgets.
Altre lib molto usate sono le Qt. QtCreator è uno strumento molto interessante (ma è bene prima sbatterci il muso, altrimenti non si imparerà molto).

Inviato da ONEPLUS A5000 tramite App ufficiale di Tom\'s Hardware Italia Forum
 

Andretti60

Utente Èlite
6,440
5,091
...
Altre lib molto usate sono le Qt. QtCreator è uno strumento molto interessante (ma è bene prima sbatterci il muso, altrimenti non si imparerà molto) ...
concordo. Tra l'altro "Qt" si pronuncia come la parola inglese "cute" (ossia "carino")
Il linguaggio C non è nato per creare interfacce grafiche, molto più conveniente usare Java (multi piattaforma) o i linguaggi specifici del sistema operativo (per esempio C# per Windows). Ovvio non significa non si possa fare, io per esempio programmavo XWindows usando il linguaggio C, che è quello che si faceva al tempo (XWindow purtroppo è sparito), sarebbe un po’ come dire ho imparato a usare un cacciavite, e vorrei adesso piantare un chiodo.
Comunque attenzione: creare programmi con interfaccia grafica non è semplice come possa apparire, richiede parecchia esperienza.
 

pabloski

Utente Èlite
2,868
916
XWindow purtroppo è sparito)

Wa no, perchè vuoi suonare il requiem di X? XWindow nella sua implementazione originale sarà relegato in qualche magazzino di qualche università americana, ma X11 è vivo sotto forma di Xorg. C'è gente che ancora oggi usa Xcb o peggio Xlib per programmare direttamente sotto X. Non è sano e non è semplice ( no widget ) ma si può fare.


Comunque attenzione: creare programmi con interfaccia grafica non è semplice come possa apparire, richiede parecchia esperienza.

Purtroppo devo concordare. I pattern che si è costretti a seguire nell'implementazione delle GUI sono assurdi. Del resto il grosso delle innovazioni nella programmazione moderna sono nate da e per le GUI.

Non è esagerato dire che un buon 80% del lavoro di programmazione per un'applicazione "tipica" consiste nel realizzare la GUI...qualcosa da cui cerco di fuggire ogni volta che posso.

Ma permettetemi di dire che le tecnologie basate su HTML5 in questo aiutano tantissimo. Se solo le implementazioni fossero un pelino più leggere di Electron, come ad esempio Sciter.
 
  • Mi piace
Reazioni: Andretti60

pabloski

Utente Èlite
2,868
916
Vorrei usare un'interfaccia grafica, anche una già creata, anche per studiare il codice. Solo che non trovo nulla online, tutti dicono la stessa cosa, cioè che è difficile, usa programmi come visual di MS. Voi sapete dove trovare un codice per una "semplice" interfaccia grafica? Per programmare uso DevC++.

Oltre al mio precedente post e a quante scritto dagli altri, in particolare sul fatto che non hai ancora padroneggiato i puntatori ( e senza in C non vai da nessuna parte ), mi sento di puntualizzare un paio di cose:

  1. Dev-C++ è carino, ma è vecchio e abbandonato. L'ultima versione è del 2015 e da allora parecchie cose sono cambiate. Ti conviene optare per un ambiente di sviluppo mantenuto, tipo Codeblocks o Codelite.
  2. Visual Studio è appunto un IDE per programmare in vari linguaggi e offre un discreto meccanismo integrato per realizzare interfacce grafiche. Ma QtCreator fa lo stesso e ce ne sono altri, per i più svariati linguaggi.
  3. E' importante chiarire che il C, come linguaggio, non predispone nulla per lo sviluppo di interfacce grafiche ( nemmeno esistevano quando fu inventato il C ). Per cui o ci si appoggia a librerie esterne e alle API dei vari sistemi operativi. Windows usa ad esempio Win32, deprecato con Windows 10 che invece mira a sostituirlo con Windows RT. Ma c'è ancora e si può usare. Potrebbe essere un esercizio interessante, perchè presenta sostanziali difficoltà e ti permette di fare pratica ed approfondire vari e fondamentali argomenti del C.
  4. Esistono le librerie che chiedi: IUP, FLTK, GTK+, EFL. E ci sono librerie per il solo disegno ( senza i widget ) tipo SDL e Cairo. Ma basta passare al C++ che ti si apre un universo di possibilità.
Penso che a questo punto sia solo questione di intenzioni. Fossi in te mi arrampicherei su Win32 e magari SDL/Cairo e darei un'occhiata a GTK+ ( che trovi ovunque ci sia di mezzo il cross-platform, compresi JavaFX e altri GUI toolkit similari ).

Sarebbe interessante dare pure un'occhiatina ai sorgenti di librerie "semplici" come FLTK e IUP, giusto per capire quali avanzati pattern di programmazione si usano nell'ambiente delle GUI.
 
  • Mi piace
Reazioni: Andretti60

JDany

Utente Attivo
461
24
CPU
Ryzen 9 3900x
Scheda Madre
ASUS H170-Pro
RAM
Corsair Vengeance LPX 2x8 GB
GPU
ZOTAC RTX 3070 TWIN EDGE OC
Monitor
Philips Gaming Monitor 24"
PSU
Corsair CX450M
Case
Sharkoon VS4-V
OS
Windows 11 Pro
"Semplice", "GUI" e "C" non possono stare nella stessa frase.
No, seriamente, avevo il tuo stesso dubbio l'anno scorso, quando abbiamo iniziato a farlo a scuola. Ad oggi ti posso dire che tutti sconsigliano le GUI su C proprio per la difficoltà nel crearle.


(se vuoi fare piccole interfacce grafiche, il modo più facile è Java + NetBeans)

Inviato da Redmi 5 Plus tramite App ufficiale di Tom\'s Hardware Italia Forum

Mi sono spiegato male :hihi:. Per semplice intendevo qualcosa di diverso dal DOS, tipo uno schermata bianca dove vedere i risultati. Io sono in seconda ITIS, a settembre inizio informatica ma li non studiamo il C, ma Java, che ho studiato per un po' poi ho lasciato.
 

JDany

Utente Attivo
461
24
CPU
Ryzen 9 3900x
Scheda Madre
ASUS H170-Pro
RAM
Corsair Vengeance LPX 2x8 GB
GPU
ZOTAC RTX 3070 TWIN EDGE OC
Monitor
Philips Gaming Monitor 24"
PSU
Corsair CX450M
Case
Sharkoon VS4-V
OS
Windows 11 Pro
Oltre al mio precedente post e a quante scritto dagli altri, in particolare sul fatto che non hai ancora padroneggiato i puntatori ( e senza in C non vai da nessuna parte ), mi sento di puntualizzare un paio di cose:

  1. Dev-C++ è carino, ma è vecchio e abbandonato. L'ultima versione è del 2015 e da allora parecchie cose sono cambiate. Ti conviene optare per un ambiente di sviluppo mantenuto, tipo Codeblocks o Codelite.
  2. Visual Studio è appunto un IDE per programmare in vari linguaggi e offre un discreto meccanismo integrato per realizzare interfacce grafiche. Ma QtCreator fa lo stesso e ce ne sono altri, per i più svariati linguaggi.
  3. E' importante chiarire che il C, come linguaggio, non predispone nulla per lo sviluppo di interfacce grafiche ( nemmeno esistevano quando fu inventato il C ). Per cui o ci si appoggia a librerie esterne e alle API dei vari sistemi operativi. Windows usa ad esempio Win32, deprecato con Windows 10 che invece mira a sostituirlo con Windows RT. Ma c'è ancora e si può usare. Potrebbe essere un esercizio interessante, perchè presenta sostanziali difficoltà e ti permette di fare pratica ed approfondire vari e fondamentali argomenti del C.
  4. Esistono le librerie che chiedi: IUP, FLTK, GTK+, EFL. E ci sono librerie per il solo disegno ( senza i widget ) tipo SDL e Cairo. Ma basta passare al C++ che ti si apre un universo di possibilità.
Penso che a questo punto sia solo questione di intenzioni. Fossi in te mi arrampicherei su Win32 e magari SDL/Cairo e darei un'occhiata a GTK+ ( che trovi ovunque ci sia di mezzo il cross-platform, compresi JavaFX e altri GUI toolkit similari ).

Sarebbe interessante dare pure un'occhiatina ai sorgenti di librerie "semplici" come FLTK e IUP, giusto per capire quali avanzati pattern di programmazione si usano nell'ambiente delle GUI.

Si ancora devo studiare i puntatori e anche l'allocazione di memoria dinamica. Insomma mi manca la parte più succulenta :hihi:. Comunque grazie per i consigli.
 
  • Mi piace
Reazioni: Andretti60

Andretti60

Utente Èlite
6,440
5,091
... C'è gente che ancora oggi usa Xcb o peggio Xlib per programmare direttamente sotto X. Non è sano e non è semplice ( no widget ) ma si può fare. ...
Stai parlando con uno che nei primi anni 80 scrisse un intero X Toolkit usando solo Xlib :) quando ero all'uni, su Sun Workstations. Mi ci divertii un sacco, erano gli anni che passavo 20 ore per giorno in laboratorio e il mio relatore dovetti venire a prendermi di peso per farmi dare l'ultimo esame, ormai avevo perso ogni interesse e volevo solo programmare. Non ebbi poi nessun problema a trovare lavoro, potevo scrivere in C la nona sinfonia di Beethoven. Lo uso ancora adesso infatti, assieme a molti altri.
 

Andretti60

Utente Èlite
6,440
5,091
... I pattern che si è costretti a seguire nell'implementazione delle GUI sono assurdi. Del resto il grosso delle innovazioni nella programmazione moderna sono nate da e per le GUI.
...
Non posso fare altro che concordare. A quello poi aggiungiamo la completa mancanza di standard tra architetture, chi vuole creare applicazioni multi piattaforma deve fare salti mortali. Stiamo cercando di creare nuovi paradigmi tipo MVVM, vedi link sotto, ma nessuno veramente funziona in tutti i casi. Prima di creare una applicazione GUI bisogna sempre fare un sacco di analisi di progetto per capire quale sia la strada giusta. E purtroppo quasi sempre la strada giusta non esiste e bisogna scendere a compromessi. Per esempio io scrissi programmi usando Visual Basic una quindicina di anni fa (orrore...) che funzionano però ancora adesso!
https://en.m.wikipedia.org/wiki/Model–view–viewmodel
 

pabloski

Utente Èlite
2,868
916
chi vuole creare applicazioni multi piattaforma deve fare salti mortali

I pattern architetturali hanno un loro perchè ed è giusto che si studino sempre nuove soluzioni. Negli anni si è però trascurato proprio il discorso multipiattaforma, ovvero come astrarre le UI e come renderle realizzabili con immediatezza.

Ad un certo punto qualcuno si è svegliato e ha capito che bisognava cambiare le regole e sono nati Xaml, QtQuick, ecc... Ma solo dopo che HTML aveva insegnato a tutti come si fanno le interfacce. Al che il passo logico è stata la realizzazione di soluzioni come Electron. E tutto bello, funge ed è stupendo per quell'uso.

Ma non sarebbe ora di pensare a soluzioni tipo React Native per PC e quant'altro? O magari a soluzioni simil-Electron ma basate su un motore HTML/CSS e Javascript un pelino più parco di risorse? Che poi usare Chromium...che te ne fai delle API USB in un'applicaizone Electron? Mi piacerebbe chiederlo agli sviluppatori xD

E per carità esistono soluzioni del genere, tipo Sciter o React Native per Windows, ma le vedo ancora troppo di nicchia, poco supportate e poco pubblicizzate. Eppure si tratta di risistematizzare l'esistente, perchè è lampante che HTML e compagni effettivamente riescono a quadrare il cerchio dello sviluppo delle UI, per cui non bisogna cercare qualcos'altro.
 

rctimelines

Utente Èlite
5,144
2,023
CPU
Ryzen 7 2700X | i7-6700k@4.5 | i5-4460... altri
Dissipatore
wraith MAX | Scythe Katana2|Arctic Freezer 11LP
Scheda Madre
Asrock B450 Fatal1ty 4K | Asus Prime Z270P | Acer Veriton
HDD
Samsung 970evo m.2 | vari | Samsung 860 evo
RAM
16GB G.Skill TridentZ 3000 | 16GB CORSAIR 2133 | 8GB DDR3 1600
GPU
RadeonPro WX3100 4G | ZOTAC GTX 1070 8G | Quadro k620 2G
Monitor
DELL 2419P 2K + Benq 17" | LG Ultrawide 27''
Net
fibra 1000
OS
Windows10-pro64/OpenSUSE-QL15.1/Debian 10.3
Quante pippe per una domanda di un adolescente che chiede l'output in un widget di una finestra anziché in una videata di testo... Non mi pare che abbia chiesto di costruire un'interfaccia grafica!

Purtroppo in C devi richiamare via software le specifiche librerie del sistema per visualizzare gli oggetti che ti servono. In realtà visual studio di MS rende disponibili i tools per poter utilizzare la GUI.. ma in effetti mi pare che non ci sia il C :)

Inviato dal mio Nexus 5 utilizzando Tapatalk
 

Hobet

Utente Attivo
609
222
CPU
i5 6600k
Dissipatore
AIO H100
Scheda Madre
ASUS z170 Deluxe
HDD
1 WD Blue 1 TB; evo 850 500gb
RAM
Vengeance 4x4
GPU
GTX 1070ti MSI
Audio
Nope
Monitor
MG278Q
Case
750D Corsair
Net
Fastweb 200/30
OS
PucyBuntu
Salve. Sono nuovo a programmare in C. So fare cose basilari, esempio usare istruzioni come if-else, switch, dichiarare variabili e stamparle a video. L'unico problema è che non mi piace che ogni volta che eseguo, anche un semplice programma, si apre nel DOS di Windows. Vorrei usare un'interfaccia grafica, anche una già creata, anche per studiare il codice. Solo che non trovo nulla online, tutti dicono la stessa cosa, cioè che è difficile, usa programmi come visual di MS. Voi sapete dove trovare un codice per una "semplice" interfaccia grafica? Per programmare uso DevC++.
Quoto quello che ha detto l'utente sopra, pare che tu abbia chiesto per fare chissà cosa. Guarda puoi usare semplicemente le librerie native di windows per fare semplici interfacce.
 
Stato
Discussione chiusa ad ulteriori risposte.

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!