tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
20
ZUGRIFFE
2229
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von YannikTold
    YannikTold YannikTold ist offline Mitglied Bronze
    Registriert seit
    Mar 2010
    Beiträge
    41
    Hallo Forengemeinde,
    ich habe Visual Studio C++ 2010 Express Editions und möchte zwei Fenster(Forms) über einen menuStrip vernetzen,
    sodass ich, wenn ich auf einen bestimmten Menüpunkt klicke, sich ein neues Fenster öffnet.
    HINWEIS: ES SOLL KEINE MESSAGE ODER EIN DIALOG SEIN JEDIGLICH EIN VON MIR ERSTELLTES FENSTER!
    Ich habe es folgendermaßen Probiert:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    #pragma once
    #include <iostream>
     
    using namespace std;
    namespace My10FingerEASY {
     
        using namespace System;
        using namespace System::ComponentModel;
        using namespace System::Collections;
        using namespace System::Windows::Forms;
        using namespace System::Data;
        using namespace System::Drawing;
    [B]...[/B]
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    [B]...[/B]
    #pragma endregion
        private: System::Void toolStripStatusLabel1_Click(System::Object^  sender, System::EventArgs^  e) {
                 }
        private: System::Void richTextBox1_TextChanged(System::Object^  sender, System::EventArgs^  e) {
                 }
    private: System::Void textLadenToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) {
                 get("uebungenUndTexte.h");
             }
    };
    }
    Es kam folgende Fehlermeldung heraus:
    Zitat Zitat von Fehlermeldung
    Fehler 1 error C2784: "_Pair_data<_Idx,std::pair<_Ty1,_Ty2>>::_Type std::tr1::get(std::pair<_Ty1,_Ty2> &)": template-Argument für "std::pair<_Ty1,_Ty2> &" konnte nicht von "const char [19]" hergeleitet werden. c:\users\user\documents\visual studio 2010\projects\10 finger easy\10 finger easy\Form1.h 225
    Fehler 2 error C2784: "_Pair_data<_Idx,std::pair<_Ty1,_Ty2>>::_CType std::tr1::get(const std::pair<_Ty1,_Ty2> &)": template-Argument für "const std::pair<_Ty1,_Ty2> &" konnte nicht von "const char [19]" hergeleitet werden. c:\users\user\documents\visual studio 2010\projects\10 finger easy\10 finger easy\Form1.h 225
    Fehler 3 error C1083: Datei (Include) kann nicht geöffnet werden: "Übungen und Texte - 10 Finger EASY.h": No such file or directory C:\Users\User\documents\visual studio 2010\Projects\10 Finger EASY\10 Finger EASY\Übungen und Texte - 10 Finger EASY.cpp 2
    Über eine schnelle Antwort würde ich mich freuen.
    Grüße
    Yannik
     
    Bitte bewerte mich, falls ich weitergeholfen habe.
    Mit freundlichen Grüßen
    Yannik Told

  2. #2
    Avatar von YannikTold
    YannikTold YannikTold ist offline Mitglied Bronze
    Registriert seit
    Mar 2010
    Beiträge
    41
    Damit dieses Thema nicht untergeht, greife ich es nochmal auf.
     
    Bitte bewerte mich, falls ich weitergeholfen habe.
    Mit freundlichen Grüßen
    Yannik Told

  3. #3
    Cromon Cromon ist offline Mitglied Brillant
    Registriert seit
    Apr 2008
    Beiträge
    819
    Meinst du mit get wirklich std::tr1::get?
     

  4. #4
    holzmcgyver holzmcgyver ist offline Mitglied
    Registriert seit
    Jul 2009
    Ort
    berlin
    Beiträge
    11
    alsoooo,

    das ist sehr einfach.

    du hast also einen menüpunkt und dazu das Click-Event, Vorher legst du die zweite Form natürlich erstmal an.
    du schrein´bst im Event folgendes:

    Formname formvarname = new Formname();
    formvarname.Show();

    Formname = gleich name der zweiten FOrm (intelsense erscheint immer, wenn du ihn richtig eingibtst...)
    formvarname = gebe der Referenz einen beliebigen namen.
    weiter mußt du nichts tun.

    noch ein tip der immer klasse ist:
    deklariere vorher im Code eine globale Formvariabel der selben Form:

    public static Formname formvarname2;

    wenn du jetzt folgendes schreibst

    Formname formvarname = new Formname();
    formvarname2 = formvarname;
    formvarname2.Show();

    kannst du jeder zeit aus der ersten Form folgendes tun:

    formvarname2.Close(); oder
    formvarname2.Hide();
    also alle funktionen aus der ersten form aufrufen.
     

  5. #5
    Avatar von YannikTold
    YannikTold YannikTold ist offline Mitglied Bronze
    Registriert seit
    Mar 2010
    Beiträge
    41
    So. Noch 2 Fehler die ich nicht ganz verstehe:
    Der Code:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    #pragma endregion
        private: System::Void toolStripStatusLabel1_Click(System::Object^  sender, System::EventArgs^  e) {
                 }
        private: System::Void richTextBox1_TextChanged(System::Object^  sender, System::EventArgs^  e) {
                 }
    private: System::Void textLadenToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) {
                 "uebungenUndTexte.h"; "ueut" = new uebungenUndTexte();
                 "ueut".Show();
             }
    };
    }
    Zitat Zitat von Fehlermeldung
    Fehler 1 error C2061: Syntaxfehler: Bezeichner 'uebungenUndTexte' c:\users\user\documents\visual studio 2010\projects\10 finger easy\10 finger easy\Form1.h 227
    Fehler 2 error C2228: Links von ".Show" muss sich eine Klasse/Struktur/Union befinden. c:\users\user\documents\visual studio 2010\projects\10 finger easy\10 finger easy\Form1.h 228
    Kann mir jemand dabei bitte helfen?
    Gruß
    YannikTold

    EDIT: Syntaxfehler ist Rechtschreibfehler, richtig? Durch Änderung in: "uebungenUndTexte.h"ist der Syntaxfehler: Zeichenfolge gekommen.
    Geändert von YannikTold (11.06.10 um 19:43 Uhr)
     
    Bitte bewerte mich, falls ich weitergeholfen habe.
    Mit freundlichen Grüßen
    Yannik Told

  6. #6
    Cromon Cromon ist offline Mitglied Brillant
    Registriert seit
    Apr 2008
    Beiträge
    819
    Was für eine Sprache verwendest du bitte zum Programmieren?

    "ueut" = new uebungenUndTexte();

    Es gibt glaub keine Sprache der Welt in der das irgendein gültiges Konstrukt aufweist. Du weisst einem String-Literal einen Wert zu, huh?

    Und was um alles in der Welt soll das absolut alleine gelassene und sinnfreie Literal
    "uebungenUndTexte.h"; ? Soll das etwa #include "uebungenUndText.h" heissen?
     

  7. #7
    Avatar von YannikTold
    YannikTold YannikTold ist offline Mitglied Bronze
    Registriert seit
    Mar 2010
    Beiträge
    41
    Zitat Zitat von holzmcgyver Beitrag anzeigen
    alsoooo,

    das ist sehr einfach.

    du hast also einen menüpunkt und dazu das Click-Event, Vorher legst du die zweite Form natürlich erstmal an.
    du schrein´bst im Event folgendes:

    Formname formvarname = new Formname();
    formvarname.Show();

    Formname = gleich name der zweiten FOrm (intelsense erscheint immer, wenn du ihn richtig eingibtst...)
    formvarname = gebe der Referenz einen beliebigen namen.
    weiter mußt du nichts tun.

    noch ein tip der immer klasse ist:
    deklariere vorher im Code eine globale Formvariabel der selben Form:

    public static Formname formvarname2;

    wenn du jetzt folgendes schreibst

    Formname formvarname = new Formname();
    formvarname2 = formvarname;
    formvarname2.Show();

    kannst du jeder zeit aus der ersten Form folgendes tun:

    formvarname2.Close(); oder
    formvarname2.Hide();
    also alle funktionen aus der ersten form aufrufen.
    @ Cromon
    Nach diesem Schema habe ich gearbeitet.
     
    Bitte bewerte mich, falls ich weitergeholfen habe.
    Mit freundlichen Grüßen
    Yannik Told

  8. #8
    Cromon Cromon ist offline Mitglied Brillant
    Registriert seit
    Apr 2008
    Beiträge
    819
    Ja schon, aber dir ist schon bewusst, dass Variabelnnamen in C++ (und auch in jeder anderen mir bekannten Programmiersprache) nicht in " " stehen?

    Code :
    1
    2
    3
    
    int a = 2;
    // und nicht
    int "a" = 2;
     

  9. #9
    Avatar von YannikTold
    YannikTold YannikTold ist offline Mitglied Bronze
    Registriert seit
    Mar 2010
    Beiträge
    41
    So besser?

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    #pragma endregion
        private: System::Void toolStripStatusLabel1_Click(System::Object^  sender, System::EventArgs^  e) {
                 }
        private: System::Void richTextBox1_TextChanged(System::Object^  sender, System::EventArgs^  e) {
                 }
    private: System::Void textLadenToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) {
                 uebungenUndTexte ueut = new uebungenUndTexte();
                 ueut.Show();
             }
    };
    }

    Das Resultat:
    Zitat Zitat von Fehlermeldungen
    Fehler 1 error C2065: 'uebungenUndTexte': nichtdeklarierter Bezeichner c:\users\user\documents\visual studio 2010\projects\10 finger easy\10 finger easy\Form1.h 227
    Fehler 2 error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'ueut' c:\users\user\documents\visual studio 2010\projects\10 finger easy\10 finger easy\Form1.h 227
    Fehler 3 error C2065: 'ueut': nichtdeklarierter Bezeichner c:\users\user\documents\visual studio 2010\projects\10 finger easy\10 finger easy\Form1.h 227
    Fehler 4 error C2061: Syntaxfehler: Bezeichner 'uebungenUndTexte' c:\users\user\documents\visual studio 2010\projects\10 finger easy\10 finger easy\Form1.h 227
    Fehler 5 error C2065: 'ueut': nichtdeklarierter Bezeichner c:\users\user\documents\visual studio 2010\projects\10 finger easy\10 finger easy\Form1.h 228
    Fehler 6 error C2228: Links von ".Show" muss sich eine Klasse/Struktur/Union befinden. c:\users\user\documents\visual studio 2010\projects\10 finger easy\10 finger easy\Form1.h 228
    EDIT: Mit int:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    #pragma endregion
        private: System::Void toolStripStatusLabel1_Click(System::Object^  sender, System::EventArgs^  e) {
                 }
        private: System::Void richTextBox1_TextChanged(System::Object^  sender, System::EventArgs^  e) {
                 }
    private: System::Void textLadenToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) {
                 int uebungenUndTexte ueut = new uebungenUndTexte();
                 ueut.Show();
             }
    };
    }

    Zitat Zitat von Fehlermeldungen
    Fehler 1 error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'ueut' c:\users\user\documents\visual studio 2010\projects\10 finger easy\10 finger easy\Form1.h 227
    Fehler 2 error C2065: 'ueut': nichtdeklarierter Bezeichner c:\users\user\documents\visual studio 2010\projects\10 finger easy\10 finger easy\Form1.h 227
    Fehler 3 error C2061: Syntaxfehler: Bezeichner 'uebungenUndTexte' c:\users\user\documents\visual studio 2010\projects\10 finger easy\10 finger easy\Form1.h 227
    Fehler 4 error C2065: 'ueut': nichtdeklarierter Bezeichner c:\users\user\documents\visual studio 2010\projects\10 finger easy\10 finger easy\Form1.h 228
    Fehler 5 error C2228: Links von ".Show" muss sich eine Klasse/Struktur/Union befinden. c:\users\user\documents\visual studio 2010\projects\10 finger easy\10 finger easy\Form1.h 228
    Geändert von YannikTold (12.06.10 um 12:15 Uhr)
     
    Bitte bewerte mich, falls ich weitergeholfen habe.
    Mit freundlichen Grüßen
    Yannik Told

  10. #10
    Cromon Cromon ist offline Mitglied Brillant
    Registriert seit
    Apr 2008
    Beiträge
    819
    Kurze Frage: Kennst du dich denn mit C++ aus? Falls nicht (so scheint es mir) würde es vielleicht mehr Sinn machen mal mit C# anzufangen.

    Aber für dein Problem:
    uebungenUndTexte (ein schlechter Name für eine Klasse) ist wohl in einer anderen Datei deklariert, also musst du diese auch includieren.
     

  11. #11
    Avatar von YannikTold
    YannikTold YannikTold ist offline Mitglied Bronze
    Registriert seit
    Mar 2010
    Beiträge
    41
    Ich habe noch nie mit Forms gearbeitet aber ich habe schon soetwas wie ELIZA oder Mastermind gemacht.
    Ich habe die Lernbücher:
    - Spielend C++ lernen
    - Coding for Fun mit C++
    - C++ Referenzen
    - Das Ensteigerseminar C++ Objektorientierte Programmierung
    Auf C# unzusteigen wäre damit ziemlich teuer erkauft.
     
    Bitte bewerte mich, falls ich weitergeholfen habe.
    Mit freundlichen Grüßen
    Yannik Told

  12. #12
    Cromon Cromon ist offline Mitglied Brillant
    Registriert seit
    Apr 2008
    Beiträge
    819
    Und hast du diese Bücher jetzt schon durch? Denn das Deklarieren von Variabeln und das Includieren von Headern sind ja wirklich absolute Basics.
     

  13. #13
    Avatar von YannikTold
    YannikTold YannikTold ist offline Mitglied Bronze
    Registriert seit
    Mar 2010
    Beiträge
    41
    Also mit Spielend C++ lernen und Coding for Fun ja.
    Mit C++ Objektorientierte Programmierung und C++ Referenzen noch nicht.
    (In C++ Objektorientierte Programmierung sehe ich gerade Die Variablendeklaration)
    Ich weiß bisher das deklarieren von Headern mit der Funktion #include möglich ist.
     
    Bitte bewerte mich, falls ich weitergeholfen habe.
    Mit freundlichen Grüßen
    Yannik Told

  14. #14
    Cromon Cromon ist offline Mitglied Brillant
    Registriert seit
    Apr 2008
    Beiträge
    819
    Ok, dann mal so in Kürze und vielleicht nicht ganz vollständig:
    #include ist eine Präprozessoranweisung. Der Präprozessor geht über deinen Quellcode bevor der Compiler rangeht. Er führt dann alle Präprozessoranweisung aus. #include weist den Präprozessor an die Datei, die du da angibst an dieser Stelle einfach reinzukopieren. Mehr passiert da nicht.

    Und bevor du einen Typ verwenden kannst muss er bekannt sein. Da der Compiler in Compilereinheiten arbeitet (.cpp-Dateien) muss in jeder Datei alles was verwendet wird bekannt sein. Daher brauchst du auch solche Header (im Gegensatz zu C#).
     

  15. #15
    Avatar von YannikTold
    YannikTold YannikTold ist offline Mitglied Bronze
    Registriert seit
    Mar 2010
    Beiträge
    41
    in dem Buch C++ Objektorientiertes Programmieren steht ein wenig mist:

    Code :
    1
    2
    3
    
    void main(void) {
    ...
    }

    void main kann nicht funktionieren, da main immer etwas zurückliefern muss.
    Dann dürfte das also nicht funktioniern eigentlich.

    Grüße
    YannikTold

    P.S.: EDIT
    Zitat Zitat von DickUndDa
    void main()
    - nix wird zurück geliefert - laut standard IMHO böse...
    Zitat Zitat von Sir_RamDac

    Mann sollte vieleicht noch anmerken das void main() in C++ nicht
    erlaubt ist.
    Geändert von YannikTold (14.06.10 um 15:02 Uhr)
     
    Bitte bewerte mich, falls ich weitergeholfen habe.
    Mit freundlichen Grüßen
    Yannik Told

Ähnliche Themen

  1. [VS C++ 2010] Windows Forms Buttons/Menüs funktionen programmieren
    Von YannikTold im Forum .NET Windows Forms
    Antworten: 7
    Letzter Beitrag: 24.10.10, 10:36
  2. Zwei Forms mit Fokus
    Von PhoenixLoe im Forum .NET Windows Forms
    Antworten: 2
    Letzter Beitrag: 01.01.08, 16:07
  3. Antworten: 1
    Letzter Beitrag: 08.09.07, 13:45
  4. Umstieg von #dev zu VC# Express, FORMS werden verkleinert.
    Von JackSparrrow im Forum .NET Windows Forms
    Antworten: 3
    Letzter Beitrag: 26.06.07, 21:22
  5. Datenaustausch zwischen zwei Forms
    Von azok im Forum .NET Archiv
    Antworten: 1
    Letzter Beitrag: 14.02.05, 11:00