Προς το περιεχόμενο

Προγραμματισμος c(γραφικο περιβαλλον)


LOLgamer

Προτεινόμενες αναρτήσεις

καλησπερα...θα ηθελα να μαθω που μπορω να βρω τις απαραιτητες γνωσεις για να δημιουργησω γραφικο περιβαλλον στη c για απλες εφαρμογες(πχ να εμφανιζει παραθυρα οπου ο χρηστης θα πληκτρολογει εκει διαφορα στοιχεια).. 

Πληροφοριακα:  ειμαι φοιτητης..διδασκομαι c αλλα δεν εχουμε ακομα αναφερθει σε αυτο και δεν ξερω αν προκειται...Ευχαριστω

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Απαντ. 139
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Συχνή συμμετοχή στο θέμα

Δημοσιευμένες Εικόνες

Δυο είναι τα επικρατέστερα GUI API για C:

 

1. GTK+ (crossplatform) -- my favorite

2. Win32 API (Windows only, και σε C δεν υποστηρίζεται επίσημα από την Microsoft... ότι βρεις θα είναι C++ oriented, για αυτό σου έβαλα άλλο link).

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Μην το κάνεις αυτό στον εαυτό σου. C + γραφικό περιβάλλον = pain. Διάλεξε μια άλλη γλώσσα καλύτερα.

 

Win32 API... δεν υποστηρίζεται επίσημα από τη MS? Μόνο C++? Τζάμπα γράφει τόσα χρόνια ο Petzold μου φαίνεται...

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Τι πάθατε;

 

Γνωρίζετε κάτι που δεν ξέρω; Ξέρετε π.χ. κανένα guide, βιβλίο, οτιδήποτε από την MS που να αναλύει Win32 API Programing με C και να μην είναι ξέρω γω καμιά 10αριά-15αριά ετών;

 

Έχει κυκλοφορήσει κανένα C εργαλείο η MS για Win32 API programming τα τελευταία ξέρω-γω 10-15 χρόνια και δεν το έχω πάρει χαμπάρι;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Γνωρίζετε κάτι που δεν ξέρω; Ξέρετε π.χ. κανένα guide, βιβλίο, οτιδήποτε από την MS που να αναλύει Win32 API Programing με C και να μην είναι ξέρω γω καμιά 10αριά-15αριά ετών;

 

Seriously? "Κανένα" βιβλίο? Ο Petzold που λέω παραπάνω ξέρεις ποιός είναι?

 

Έχει κυκλοφορήσει κανένα C εργαλείο η MS για Win32 API programming τα τελευταία ξέρω-γω 10-15 χρόνια και δεν το έχω πάρει χαμπάρι;

 

Με την ίδια λογική ο προγραμματισμός BSD/POSIX sockets σε C δεν υποστηρίζεται επίσημα σε *nix μιας και ο,τι API υπάρχει σχετικά έχει βγει δεκαετίες πριν.

 

Τεσπα δεν συνεχίζω, το "σε C δεν υποστηρίζεται επίσημα από την Microsoft" μόνο αστείο μπορώ να το χαρακτηρίσω. Tο γεγονός ότι ενδεχομένως βρίσκεις περισσότερα resources για GUI programming με κάποιο framework σε άλλη γλώσσα πέραν της C εξηγείται πολύ εύκολα επειδή η C είναι πολύ κακή επιλογή για να προγραμματίζεις GUI (τουλάχιστον τα message-loop-based περι των οποίων ο λόγος).

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Seriously? "Κανένα" βιβλίο? Ο Petzold που λέω παραπάνω ξέρεις ποιός είναι?

 

Όχι περίμενα εσένα να μου τον γνωρίσεις. Ο Petzold που λες παραπάνω ξέρεις τι χρονολογία κυκλοφόρησε το τελευταίο βιβλίο που πραγματευόταν Win32 με C;

 

Με την ίδια λογική ο προγραμματισμός BSD/POSIX sockets σε C δεν υποστηρίζεται επίσημα στο Linux μιας και ο,τι API υπάρχει σχετικά έχει βγει δεκαετίες πριν.

 

Τεσπα δεν συνεχίζω, το "σε C δεν υποστηρίζεται επίσημα από την Microsoft" μόνο αστείο μπορώ να το χαρακτηρίσω.

 

Χαρακτήρισέ το όπως θέλεις, είπαμε τσάμπα είναι. Μήπως ξέρεις σε ποια γλώσσα συνεχίζεται να γράφεται το Linux, το Unix και όλα τους τα παρελκόμενα; Ολόιδια δηλαδή με την Microsoft... καλά κρασιά.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Όχι περίμενα εσένα να μου τον γνωρίσεις. Ο Petzold που λες παραπάνω ξέρεις τι χρονολογία κυκλοφόρησε το τελευταίο βιβλίο που πραγματευόταν Win32 με C;

 

Ξέρω, μιας και έχω σε hard copy το 5th edition που είναι και αυτό στο οποίο αναφέρεσαι. Αυτά που γράφει μέσα ισχύουν σήμερα ή όχι;

 

Για τα υπόλοιπα θα πώ μόνο το εξής και τέλος γιατί βαριέμαι πάλι τα ίδια:

 

Γεγονός: ο κόσμος δεν προγραμματίζει πλέον GUI σε C.

 

Ερμηνεία migf1: επειδή η C δεν υποστηρίζεται για GUI programming από τη MS (για κάποιον ορισμό του "δεν υποστηρίζεται" που δε μπορώ να καταλάβω, μιας και είναι γεγονός πως μπορείς να το κάνεις 100% αν θέλεις και όλα μα όλα τα features είναι διαθέσιμα, ακόμα κι αυτά που βγαίνουν σήμερα -- το μόνο πράγμα που δεν μπορείς να κάνεις είναι Metro apps σε WinRT, αλλά δε μιλάμε για κάτι τέτοιο).

 

Εναλλακτική ερμηνεία: επειδή η C δεν είναι καλή επιλογή για GUI programming και μπορείς να κάνεις το ίδιο πράγμα ευκολότερα σε άλλες γλώσσες.

 

Ο καθένας ας βγάλει τα συμπεράσματά του.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Για τα υπόλοιπα θα πώ μόνο το εξής και τέλος γιατί βαριέμαι πάλι τα ίδια:

 

Γεγονός: ο κόσμος δεν προγραμματίζει πλέον GUI σε C.

 

Ναί όντως, το Gnome για παράδειγμα δεν είναι ούτε σε C ούτε έχει απολύτως καμία σχέση με GUI και κυρίως δεν ασχολείται ο κόσμος μαζί του.

 

Πρέπει κάποια στιγμή να συνειδητοποιήσεις πως ούτε ο δικός σου μικρο-κόσμος είναι ο κόσμος γενικότερα, ούτε ο μικρο-κόσμος με τον οποίον συναναστρέφεσαι είναι όλος ο κόσμος γενικότερα.

 

Ξέρω, μιας και έχω σε hard copy το 5th edition που είναι και αυτό στο οποίο αναφέρεσαι. Αυτά που γράφει μέσα ισχύουν σήμερα ή όχι;

 

Ερμηνεία migf1: επειδή η C δεν υποστηρίζεται για GUI programming από τη MS (για κάποιον ορισμό του "δεν υποστηρίζεται" που δε μπορώ να καταλάβω, μιας και είναι γεγονός πως μπορείς να το κάνεις 100% αν θέλεις και όλα μα όλα τα features είναι διαθέσιμα, ακόμα κι αυτά που βγαίνουν σήμερα).

 

Εναλλακτική ερμηνεία: επειδή η C δεν είναι καλή επιλογή για GUI programming και μπορείς να κάνεις το ίδιο πράγμα ευκολότερα σε άλλες γλώσσες.

 

Ο καθένας ας βγάλει τα συμπεράσματά του.

 

Το μη διαγραμμένο ξαναπές το. Πολύ όμορφη και η απόπειρά σου να αναλύσεις πως ερμηνεύω εγώ τα πράγματα.

 

Για τον φίλο που άρχισε το νήμα, εφόσον είσαι φοιτητής και εφόσον έχεις χρόνο κι εφόσον σε ενδιαφέρει το αντικείμενο γενικότερα, η δική μου άποψη είναι πως μόνο καλό θα σου κάνει να ασχοληθείς με GUI programming σε C. Θα πάρεις γερές βάσεις.

 

 

Από κάποια στιγμή και μετά μάλιστα, είναι πολύ πιθανό να αρχίσεις να διασκεδάζεις με όσους ξέρουν να δουλεύουν μονάχα με black-boxes, και ακόμα περισσότερο με όσους νομίζουν ότι ξέρουν να δουλεύουν με black boxes. Περισσότερο όμως από όλους θα διασκεδάζεις με όσους ξέρουν μόνο θεωρίες για black boxes και πιστεύουν πως μπορούν να συζητήσουν και για τα εντός των black-boxes (και που να δεις όταν όχι μόνο το νομίζουν αλλά το πιστεύουν κιόλας). Το απόγειο θα είναι με όσους νομίζουν πως υπάρχει περίπτωση ποτέ να τους κρατήσει εργοδότης παραπάνω από 1 μήνα αν επιχειρήσουν ποτέ να δουλέψουν in the real world εντός black-boxes.

 

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

Το Windows API κατασκευασμένο το 1985 (Windows 1.0) ακολουθεί την εξέλιξη της τεχνολογίας και κατά συνέπεια στα χρόνια που ακολούθησαν έχει μπολιαστεί με διάφορα παραδείγματα προγραμματισμού.

 

Το πρώτο παράδειγμα ανάπτυξης είναι καθαρά διαδικαστικό (procedural) βασιζόμενο εξ ολοκλήρου σε γλώσσα C (ευτυχώς δεν προτίμησαν την Pascal όπως οι σχεδιαστές της Apple LISA :-D) , η ανάπτυξη σε αυτό είναι μεν εφικτή αλλά δεν μπορεί να θεωρηθεί εύκολη ειδικά για τον αρχάριο προγραμματιστή ή για τον (τότε..) DOS προγραμματιστή.

 

Το δεύτερο παράδειγμα ανάπτυξης είναι καθαρά OOP βασιζόμενο εξ ολοκλήρου σε γλώσσα C++ (με εσωτερική αναφορά στις procedural συναρτήσεις της C του Windows API), η ανάπτυξη σε αυτό είναι εφικτή με την χρήση κάποιου C++ framework. Πρώτος διδάξας αυτού του παραδείγματος σε Windows η πάλαι ποτέ κραταιά Borland με την κατασκευή του OOP OWL framework. Λίγο καιρό μετά η Microsoft θα παρουσιάσει την δικιά της εκδοχή ονόματι MFC η οποία θα γίνει συνώνυμο του OOP προγραμματισμού για Windows εφαρμογές (μέχρι την έλευση της VB 3.0 και της Borland Delphi).

 

Και αν ως εδώ τα πράγματα είναι ξεκάθαρα για το Windows API, το τρίτο παράδειγμα ανάπτυξης περιπλέκει λίγο τα πράγματα καθώς η Microsoft δημιουργεί μια νέα τεχνολογία ονόματι "COM" η οποία παρέχει πρόσβαση σε διάφορες νέες υπηρεσίες των Windows '95 (όχι σε όλες όμως!) με φιλοσοφία OOP (ένα μικρότερης κλίμακας πείραμα υπήρξε το 16bit "OLE"). Η χρήση αυτών των υπηρεσιών μπορεί να γίνει και μέσο καθαρής C (ή οποιασδήποτε άλλης procedural γλώσσας) αλλά μπορεί να γίνει και μέσο OOP γλωσσών (πχ. C++ ή VB ή Delphi κλπ) και το δεύτερο είναι το πλέον προτιμητέο σενάριο χρήσης καθώς το "COM" διέπεται από OOP φιλοσοφία και η MS παρέχει έτοιμα OOP C++ like header αρχεία για όσους μεταφραστές υποστηρίζουν εγγενώς "COM" προγραμματισμό (ή άλλοι θα καλούν το "COM" μέσο καθαρής C).

 

Το τέταρτο παράδειγμα ανάπτυξης εμφανίζεται στις αρχές του 2000 και προσπερνά (ή πιο σωστά καλύπτει) συνολικά (..ας πούμε) το Windows API (και την "C" και το "COM" τμήμα του κλπ) μέσα από managed κώδικα βασιζόμενο στο .NET framework προωθούμενο με μεγάλη ορμή από την Microsoft (και σε διάφορες μορφές).

 

Το αξιοσημείωτο εδώ είναι ότι και τα 4 παραδείγματα ανάπτυξης εξακολουθούν να υποστηρίζονται από την Microsoft δίχως αυτό να σημαίνει ότι η εταιρία δεν οδηγεί κάπου συγκεκριμένα τις εξελίξεις (προς OOP λύσεις), συνεπώς αν επιθυμεί κανείς να γράψει ένα πρόγραμμα σε Windows API βασιζόμενος σε C, τούτο είναι εφικτό αλλά οπωσδήποτε θα πρέπει να ερευνηθεί (πριν την σχεδίαση του) αν είναι και συνετό.

 

--

Για τον κόσμο του Linux όσον αφορά την C & GUI είχα ακούσει καλά λόγια για το GTK (που ανέφερε και ο φίλος migf1) από έναν γνωστό μου που κάποτε ασχολήθηκε με ανάπτυξη Linux εφαρμογών, αλλά δεν έχω προσωπική εμπειρία επί τούτου.

Επεξ/σία από Directx
  • Like 4
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δεν φαντάζομαι να σας ζητηθεί να κάνετε κάτι ιδιαίτερο στο γραφικό περιβάλλον με τη C. Υπάρχουν πολυ πιο σημαντικά πράγματα να μάθετε απο το να σχεδιάζετε κουμπάκια.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Όλοι εδώ μέσα προτείνουν προγραμματισμό σε WIN32 API, εν έτη 2013, τί να πω. Αύριο να μάθετε Turbo C και μεθαύριο VB6. 

 

 

@LOLGamer, αύριο βγαίνεις στην αγορά εργασίας ffs. Μάθε αυτό που αυτή θέλει. C#/VB .NET. 

Μην είσαι προσκολλημένος σε αυτά που διδάσκεσαι, γιατί απλά διδάσκουν για μελλοντικού άνεργους και όχι για προγραμματιστές. 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Όλοι εδώ μέσα προτείνουν προγραμματισμό σε WIN32 API, εν έτη 2013, τί να πω. Αύριο να μάθετε Turbo C και μεθαύριο VB6. 

 

Εγώ πάντως πρότεινα ακριβώς το αντίθετο. :)

 

C# είναι μια χαρά και για πρώτη γλώσσα και για να κάνεις GUI. Θα την προτιμούσα από VB.NET λόγω της σύνταξης αλλά από καθαρά εργασιακής άποψης και VB.NET "εξίσου" καλή είναι.

 

@migf1 Έμαθες πρόσφατα την έκφραση black box και σου αρέσει να τη χρησιμοποιείς συνέχεια υποθέτω? Απορώ πώς δεν έχεις προτείνει ακόμα σε όποιον κάνει το λάθος να σου δώσει σημασία να ξεκινήσει από assembly. Μάλλον φαντάζομαι επειδή δεν ξέρεις assembly, αλλιώς ποιός μας γλίτωνε.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Μην υποτιμάτε το win32.

Πρόγραμμα που φτιάχτηκε πριν 15 χρόνια παιζει σήμερα σε όλα τα windows (από 98 μέχρι win 8) 32/64.

Φτιάχνεις .ΝΕΤ 2.0 , 3.0 η 3.5 εφαρμογή το 2013 και ανακαλύπτεις ότι στα win8 δεν τρέχει επειδή δεν έχουν default enabled αυτό το framework.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αυτό είναι όντως λίγο τραγικό (δεν ξέρω κιόλας γιατί το έκαναν) αλλά μπορείς να το κανονίσεις πανεύκολα αν κάνεις ClickOnce deployment, ή να το κάνεις manually μέσω του installer αν κάνεις detect πως είσαι σε 8.

 

Με το Win32 το αντίστοιχο πρόβλημα είναι πως είτε το functionality που χρησιμοποιείς είναι ο ελάχιστος κοινός παρονομαστής (π.χ. Windows XP = tragic το 2013) είτε θα πρέπει ο κώδικάς σου να είναι γεμάτος feature detection.

 

Ακόμα και τότε, άντε καλά αν μιλάμε για κάτι που μπορείς να το δεις σαν optional feature (παράδειγμα) αλλά αν είναι κάτι σοβαρό (παράδειγμα) τότε θα πρέπει είτε να ανεβάσεις τα minimum requirements είτε να ξοδέψεις χρόνο και ενδεχομένως να φτύσεις αίμα για να κάνεις μόνος σου ένα fallback implementation το οποίο δε θα είναι στην τελική το ίδιο αξιόπιστο με το native. Επομένως στην πράξη όταν γράφεις εφαρμογή Win32 σήμερα δε σε παίρνει να έχεις "compatibility all the way" εκτός αν έχεις enterprise πελάτες με legacy συστήματα οι οποίοι θα πληρώσουν όσα ζητήσεις.

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Όλοι εδώ μέσα προτείνουν προγραμματισμό σε WIN32 API, εν έτη 2013, τί να πω. Αύριο να μάθετε Turbo C και μεθαύριο VB6.

 

@LOLGamer, αύριο βγαίνεις στην αγορά εργασίας ffs. Μάθε αυτό που αυτή θέλει. C#/VB .NET.

Μην είσαι προσκολλημένος σε αυτά που διδάσκεσαι, γιατί απλά διδάσκουν για μελλοντικού άνεργους και όχι για προγραμματιστές.

 

Όταν ξεκινάει κάποιος ένα νήμα ρωτώντας που να κοιτάξει για GUI programming με C, η δική μου τουλάχιστον αντίληψη είναι πως θέλει να του προτείνουμε που να κοιτάξει για GUI programming με C.

 

Τα "άσε τη C και πιάσε άλλη γλώσσα", "κάνε χάρη στον εαυτό σου και γράψε GUI με άλλη γλώσσα, κλπ" σύφωνα πάντα με τη δική μου αντίληψη, είναι 1η απάντηση σε άλλου είδους ερώτηση, π.χ. "ποιες γλώσσες να κοιτάξω για GUI programming".

 

Ξέρεις για παράδειγμα ότι η ερώτηση του αφορά την άμεση επαγγελματική του αποκατάσταση στην Ελλάδα και όχι π.χ. την εκπαίδευσή του ή την επαγγελματική του αποκατάσταση στο εξωτερικό ή π.χ. την... τάβλα του να ασχοληθεί με open-source;

 

Θα του προκαταβάλλεις δηλαδή τα θέλω του σύμφωνα με τα δικά σου κριτήρια χωρίς καν να στο έχει ζητήσει;

 

Μπορείς φυσικά να το κάνεις, αλλά επίσης φυσικά μπορεί και ο καθένας να απαντήσει στην ερώτηση όπως τέθηκε.

 

 

@forum:

 

ΥΓ. Σε ότι αφορά τα GUI οι σημερινοί δημοφιλείς GUI "κόσμοι" είναι οι εξής, χωρίς να τους βάζω σε σειρά προτεραιότητας:

 

1. .net γλώσσες σε Windows (και σε 2η μοίρα C++)

2. C μέσω GTK+ για Gnome σε Linux/Unix

3. C++ μέσω QT για KDE σε Linux/Unix

4. Objective C μέσω Cocoa για MacOSX/iOS

5. Android API (Java) για Android OS.

6. Java Swing/FX κλπ για platform agnostic.

 

Τα 2, 3 και 6 "τυγχάνει" να είναι και cross-platform.

 

Αυτά περί GUI κόσμων από εμένα.

 

@DirectX: Όπως πάντα συνοπτικός και εύστοχος :)

 

 

 

...

 

@migf1 Έμαθες πρόσφατα την έκφραση black box και σου αρέσει να τη χρησιμοποιείς συνέχεια υποθέτω? Απορώ πώς δεν έχεις προτείνει ακόμα σε όποιον κάνει το λάθος να σου δώσει σημασία να ξεκινήσει από assembly. Μάλλον φαντάζομαι επειδή δεν ξέρεις assembly, αλλιώς ποιός μας γλίτωνε.

 

Πρόσφατα είχες πει στον StarLight πως όταν εκείνος επαιζε με Playmobil εσύ έβγαζες τα πρώτα σου χρήματα από προγραμματισμό. Θα σου απαντήσω λοιπόν αντίστοιχα κι εγώ: όταν εσύ ήσουν με το μπιμπερό εγώ έγραφα compiler, assembler, linker & loader ως φοιτητής CS στην Αμερική. Όταν εσύ άρχισες να παίζεις με playmobil εγώ είχα βγάλει ήδη το 1ο μου αυτοκίνητο... και πάει λέγοντας.

 

Το τι έμαθα πρόσφατα εγώ και τι όχι είσαι ο τελευταίος που θα μπορούσε να έχει έστω και την παραμικρή ιδεά.

 

 

  • Like 3
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

  • Δημιουργία νέου...