panos2607 Δημοσιεύτηκε Φεβρουάριος 16, 2011 #1 Κοινοποίηση Δημοσιεύτηκε Φεβρουάριος 16, 2011 Προσπαθώ εδώ και καιρό να φτιάξω ένα app χρησιμοποιώντας c++ σε πλατφόρμα microsoft visual studio 2008 και έχω το εξής πρόβλημα συνέχεια. Ενώ μπορώ(χρησιμοποιώντας button) να πάω από την πρώτη φόρμα στην δεύτερη, δεν μπορώ να κάνω το αντίθετο.Δηλαδή να επιστρέψω(πάλι με χρήση button) από την δεύτερη φόρμα στην πρώτη... Το ίδιο βέβαια γίνεται και με τις υπόλοιπες φόρμες... Υπάρχει κάποιος γνώστης που να μπορεί να βοηθήσει;;;; Ευχαριστώ εκ των προτέρων!!! Link to comment Share on other sites More sharing options...
Jaco Φεβρουάριος 16, 2011 #2 Κοινοποίηση Φεβρουάριος 16, 2011 no code no party... Link to comment Share on other sites More sharing options...
panos2607 Φεβρουάριος 16, 2011 Author #3 Κοινοποίηση Φεβρουάριος 16, 2011 Έχεις δίκιο... Καταρχάς, έχω δημιουργήσει windows form application. Από εκεί και πέρα έχω σχεδιάσει τις φόρμες μου και προσπαθώ να τις συνδέσω. Για παράδειγμα έχω στην form1 ένα button next και θέλω να πάω στην form2. Το πετυχαίνω με τον εξής κώδικα στην form1: public ref class Form1 : public System::Windows::Forms::Form { public: Form2^ FormB; public: Form1(void) { InitializeComponent(); FormB=gcnew Form2(); } ...... private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) { FormB->Show(); this->Hide(); } Αυτός είναι ο κώδικας στην form1. Στην form2 έχω βάλει πάλι ένα button back για να γυρίζει στην form1. Χρησιμοποιώ αντίστοιχο κώδικα στην form2 και μου βγάζει errors εκ τον οποίων κάποια αφορούν και τον κώδικα της form1 που πριν θεωρούταν σωστός και έτρεχε. Έχω δοκιμάσει και #include form1.h και ότι άλλο έχω βρει(και έχω καταλάβει βέβαια) σε διάφορα forums. Ευχαριστώ Link to comment Share on other sites More sharing options...
Jaco Φεβρουάριος 16, 2011 #4 Κοινοποίηση Φεβρουάριος 16, 2011 Πάλι αυτό δεν λέει και πολλά... τι errors σου βγάζει ο compiler...?Ο event handler από το κουμπί της φόρμας 2 που είναι...? Επειδή η φόρμα 2 είναι child στην φόρμα 1, αν then έχεις περάσει το this της 1 στην 2, τότε δεν μπορείς να αναφερθείς στην φόρμα 1 από την 2... θα πρέπει είτε ο event handler της φόρμας 2 να είναι στο ίδιο scope με την φόρμα 1, είτε να περάσεις στην 2 κάποιον function pointer ή τον this pointer της 1...Άσχετο, αλλά όταν βλέπω πως κατάντησε η ms την c++, μου γυρνάνε τα μάτια, δεν ντρέπονται λίγο...? Link to comment Share on other sites More sharing options...
PaNick Φεβρουάριος 16, 2011 #5 Κοινοποίηση Φεβρουάριος 16, 2011 Για πήγαινέ το βήμα-βήμα με το debugger να δεις αν παίζει τπτ απ΄ αυτά που σου λέει ο Jaco. Link to comment Share on other sites More sharing options...
panos2607 Φεβρουάριος 18, 2011 Author #6 Κοινοποίηση Φεβρουάριος 18, 2011 Προσπαθώ από εχθές να βρω κάτι με τα στοιχεία που μου έδωσες αλλά μάλλον είμαι πολύ πρωτάρης. Δεν καταλαβαίνω πως θα περάσω το this της μιας φόρμας στην άλλη Τα errors που μου βγάζει ο compiler όταν κάνω include το header file της πρώτης φόρμας στην δεύτερη είναι τύπου missing type specifier, undeclared identifier, syntax error και όλα αυτά στον κώδικα της πρώτης φόρμας που μέχρι πριν λίγο ήταν σωστός και έτρεχε... Ευχαριστώ για το ενδιαφέρον!!! Link to comment Share on other sites More sharing options...
Jaco Φεβρουάριος 18, 2011 #7 Κοινοποίηση Φεβρουάριος 18, 2011 Δεν ξέρω τι ισχύει ακριβώς στην ms vc++ για τις φόρμες, αλλά υποθέτω ότι τουλάχιστον ένας constructor μιας φόρμας πρέπει λογικά να παίρνει σαν παραμέτρους ένα parent και ένα modal switch... το parent είναι ο pointer της φόρμας η οποία δημιουργεί μια άλλη φόρμα, αυτό στην ουσία είναι το this... ίσως by default ο parent pointer να είναι 0 ή null, αλλά αν θες αλληλεπίδραση και από το child->parent, τότε αυτός ο pointer θα πρέπει να συμπληρώνεται με το this της πρώτης φόρμας...Πάνω-κάτω αυτά είναι στάνταρ σε c++ και gui, οπότε κάτι τέτοιο πρέπει να συμβαίνει και στην περίπτωσή σου... Link to comment Share on other sites More sharing options...
Wizard! Φεβρουάριος 18, 2011 #8 Κοινοποίηση Φεβρουάριος 18, 2011 O πιό απλός τρόπος είναι να δημιουργήσεις τη φόρμα στο project και απλά να την κάνεις show/hide. Εσύ τη δημιουργείς δυναμικά κι έτσι δε γίνεται bind το event του click στο καινούριο button. Πάντως αν θέλεις να παιδευτείς με το event ψάξε για addhandler. Και ο καλύτερος τρόπος να βρεις τη FormA μέσω της FormB είναι με this.parent() Link to comment Share on other sites More sharing options...
Dj_John_2001 Μάρτιος 6, 2011 #9 Κοινοποίηση Μάρτιος 6, 2011 γιατί δεν ασχολείσαι με τη visual Basic ? Link to comment Share on other sites More sharing options...
neuromancer Μάρτιος 6, 2011 #10 Κοινοποίηση Μάρτιος 6, 2011 Δες καλύτερα κάποιο παράδειγμα της MS. Το windows programming δεν είναι τόσο προφανές αν δεν έχεις καταλάβει την αρχιτεκτονική των windows. Ακόμη και να το κάνεις να δουλέψει δεν είναι σίγουρο ότι το έκανες σωστά! Αυτό μπορεί μακροπρόθεσμα στην εφαρμογή που κάνεις να σε οδηγήσει σε αδιέξοδο. Αυτό που ρωτάς π.χ. είναι βασικότατο ζήτημα σε εφαρμογή με πολλά παράθυρα. Και για να σε προβληματίσω περισσότερο, θες να κάνεις MDI εφαρμογή ή απλά ζητάς ένα dialog-box; Έχει μεγάλη διαφορά στο πώς θα το στήσεις. Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.