Maus, Laden



  • Hey,
    ich habe zwei Fragen. Wie kann ich die Mauskoordianten speichern?. Ich wollte nämlich eine Menü erzeugen

    CMenu *m_Menu; // Zeiger auf Menü
        CPoint m_Point; // Kopie der Mausposition
    
        m_Point = POINT;
    
        ClientToScreen(&m_pPoint);
    
        m_Menu = GetMenu();
    
        m_Menu = m_Menu->GetSubMenu(0);
    
        m_Menu->TrackPopupMenu(TPM_CENTERALIGN + TPM_LEFTBUTTON,
        m_Point.x, m_Point.y, this, NULL);
    

    Bei mir wird ein Fehler bei m_Point = POINT; angezeigt. Immer nicht gedklarierter Bezeichner. Ich habe auch schon andere Sachen ausprobiert aber es geht nicht.

    Die andere Frage ist, wie kann ich eine Datei öffnen. ALso ich lasse in eine Datei schreiben. Läuft alles bestens. Nur man soll die Datei öffnen können, um den Inhalt zu sehen in der Form wie er rein geschrieben wird und ich weiß nicht wie der Befehl dafür ist.

    Danke für die Hilfe



  • Lenni schrieb:

    Hey,
    ich habe zwei Fragen. Wie kann ich die Mauskoordianten speichern?. Ich wollte nämlich eine Menü erzeugen

    CMenu *m_Menu; // Zeiger auf Menü
        CPoint m_Point; // Kopie der Mausposition
    
        m_Point = POINT;
    
        ClientToScreen(&m_pPoint);
    
        m_Menu = GetMenu();
    
        m_Menu = m_Menu->GetSubMenu(0);
    
        m_Menu->TrackPopupMenu(TPM_CENTERALIGN + TPM_LEFTBUTTON,
        m_Point.x, m_Point.y, this, NULL);
    

    Bei mir wird ein Fehler bei m_Point = POINT; angezeigt. Immer nicht gedklarierter Bezeichner. Ich habe auch schon andere Sachen ausprobiert aber es geht nicht.

    Allgemein dürfte GetCusorPos() die Mauskoordinaten liefern - innerhalb der MessageHandler für die Maus-Nachrichten wird bekommst du sie sogar mitgeliefert.

    Die andere Frage ist, wie kann ich eine Datei öffnen. ALso ich lasse in eine Datei schreiben. Läuft alles bestens. Nur man soll die Datei öffnen können, um den Inhalt zu sehen in der Form wie er rein geschrieben wird und ich weiß nicht wie der Befehl dafür ist.

    Du kannst die Datei als CFile öffnen und seriell einlesen - der Rest geht invers zum Schreiben. (nur als Anhaltspunkt - wie sieht bei dir das Datei schreiben aus?)



  • also die erste Frage habe ich eben selber schon fast hinbekommen. Es haben im Funktionskopf 2 Parameter gefehlt.

    void CProjektDlg::OnBearbeiten(CWnd* pWnd, CPoint point) 
    {
        // TODO: Code für die Behandlungsroutine für Nachrichten hier einfügen
        CMenu *m_Menu; // Zeiger auf Menü
        CPoint m_Point; // Kopie der Mausposition
    
        m_Point = point;
    
        ClientToScreen(&m_Point);
    
        m_Menu = GetMenu();
    
        m_Menu = m_Menu->GetSubMenu(0);
    
        m_Menu->TrackPopupMenu(TPM_CENTERALIGN + TPM_LEFTBUTTON,
        m_Point.x, m_Point.y, this, NULL);	
    }
    

    Dafür habe ich aber nicht die vordefinierte Funktion
    OnContextMenu(CWnd* pWnd, CPoint point)
    sondern einfach nur die Parameter an meine onklick Button Bearbeiten. Also er bekommt Koordinaten. Nur wohl die falschen. Kann ichd as überhaupt so machen?

    nur das dumme ist, dass er das Menü nichts auf dem Button plaziert, sondern rechts am Bildschirmrand!

    Und zu der anderen Frage. Also wenn man auf einen Button klicke (Tabelle laden) dann soll sich das Textdokumt öffnen. Einfach so, wie man es auch unter Windows öffnen möchte. Das Laden der Daten bzw. Bearbeiten läufteinwandfrei in einer anderen Funktion. Jetzt soll es nur geöffnet werden und das verstehe ich nicht wie. bzw. weiß nicht wie man das schreibt.



  • Lenni schrieb:

    also die erste Frage habe ich eben selber schon fast hinbekommen. Es haben im Funktionskopf 2 Parameter gefehlt.

    void CProjektDlg::OnBearbeiten(CWnd* pWnd, CPoint point) 
    {
        // TODO: Code für die Behandlungsroutine für Nachrichten hier einfügen
        CMenu *m_Menu; // Zeiger auf Menü
        CPoint m_Point; // Kopie der Mausposition
    
        m_Point = point;
    
        ClientToScreen(&m_Point);
    
        m_Menu = GetMenu();
    
        m_Menu = m_Menu->GetSubMenu(0);
    
        m_Menu->TrackPopupMenu(TPM_CENTERALIGN + TPM_LEFTBUTTON,
        m_Point.x, m_Point.y, this, NULL);	
    }
    

    Dafür habe ich aber nicht die vordefinierte Funktion
    OnContextMenu(CWnd* pWnd, CPoint point)
    sondern einfach nur die Parameter an meine onklick Button Bearbeiten. Also er bekommt Koordinaten. Nur wohl die falschen. Kann ichd as überhaupt so machen?

    nur das dumme ist, dass er das Menü nichts auf dem Button plaziert, sondern rechts am Bildschirmrand!

    Die OnClick Benachrichtigungen für Dialogelemente bekommen keine Maus-Koordinaten übergeben, sondern nur die Button-ID und Handle. Und du erhältst vermutlich nur Datenmüll als Parameter. Das heißt, du mußt dir über GetCursorPos() die aktuelle Mausposition besorgen.

    Und zu der anderen Frage. Also wenn man auf einen Button klicke (Tabelle laden) dann soll sich das Textdokumt öffnen. Einfach so, wie man es auch unter Windows öffnen möchte. Das Laden der Daten bzw. Bearbeiten läufteinwandfrei in einer anderen Funktion. Jetzt soll es nur geöffnet werden und das verstehe ich nicht wie. bzw. weiß nicht wie man das schreibt.

    Und woran hapert es jetzt? Wenn du eine Funktion zum Laden hast, mußt du sie nur noch aufrufen.



  • KLappt gar nicht bei mir

    CMenu *m_Menu; // Zeiger auf Menü
        POINT pt;
    
        GetCursorPos(&pt);
    
        ClientToScreen(&pt);
    
        m_Menu = GetMenu();
    
        m_Menu = m_Menu->GetSubMenu(0);
    
        m_Menu->TrackPopupMenu(TPM_CENTERALIGN + TPM_LEFTBUTTON,pt.x, pt.y, this, NULL);
    

    Bei bei Datei laden, habe ihc eine Funktion, die die Datei im HINTERGRUND öffnet und liest bzw. schreibt. Die Datei selber ist nicht sichtbar. Das geschieht alles im HINTERGRUND.
    Ich möchte jetzt nur die Datei öffnen. Um sich vorzustellen was passiert. Erstell eine Datei auf dem Desktop und klicke mit dem Doppelklick drauf. Genau das soll bei mir passieren. Damit man mit den Augen reingucken kann.

    Und ich habe keine Ahnung wie man das machen kann. Ich weiß auch nicht ob es einen Parameter gibt der das macht.



  • ICh weiß jetzt schon mal wo der Fehler ist. Es liegt daran das er das Menu nicht laden kann. Also ich habe insgesamt 2 aber ich kann nur 1 von beiden laden. bei dem anderen macht er einen fehler!



  • Lenni schrieb:

    KLappt gar nicht bei mir

    CMenu *m_Menu; // Zeiger auf Menü
        POINT pt;
    
        GetCursorPos(&pt);
    
        ClientToScreen(&pt);
    
        m_Menu = GetMenu();
    
        m_Menu = m_Menu->GetSubMenu(0);
    
        m_Menu->TrackPopupMenu(TPM_CENTERALIGN + TPM_LEFTBUTTON,pt.x, pt.y, this, NULL);
    

    Kannst du mal den Debugger anwerfen und nachsehen, ob überhaupt sinnvolle Werte als Koordinaten übergeben werden? (btw, GetCursorPos() liefert bereits Screen-Koordinaten)

    Bei bei Datei laden, habe ihc eine Funktion, die die Datei im HINTERGRUND öffnet und liest bzw. schreibt. Die Datei selber ist nicht sichtbar. Das geschieht alles im HINTERGRUND.
    Ich möchte jetzt nur die Datei öffnen. Um sich vorzustellen was passiert. Erstell eine Datei auf dem Desktop und klicke mit dem Doppelklick drauf. Genau das soll bei mir passieren. Damit man mit den Augen reingucken kann.

    Und ich habe keine Ahnung wie man das machen kann. Ich weiß auch nicht ob es einen Parameter gibt der das macht.

    Willst du die Datei in deinem Programm öffnen - oder willst du das Standardprogramm für den Dateityp starten? Falls ersteres, mußt du die Einlesen-Funktion so anpassen, daß sie die Datei auch anzeigt.

    (die Funktion, um eine Datei mit ihrem Standard-Programm zu öffnen, finde ich leider nicht auf die Schnelle)



  • öhm also es werden die richtigen Koordianten und alles übergeben. Nur bei mir ist das so ich habe insgesammt 2 Menus. Einmal für rechts oben date hilfe etc. und wenn ich auf einen Button klicke, soll ein kontextmenu geöffnet werden. Ich habe zwei Menüs erstellt. Nur er greift immer nur auf das erste zu, was 1a funktioniert. Er ruft als Kontextmenü auch das erste auf.
    Wenn ich nicht das Menü mannuell eingebe, stürtzt das Programm ab. Ebenfalls wenn ich mein zweites Menü als Hauptmenü (Eigentschaften -> Menü im Hauptdialog) stürtzt das ab.
    Hast du eine Ahnung wie ich mehrere Menüs in mein Programm implementieren kann?

    Frage 2.) achso okay Danke das wollte ich nämlich


Anmelden zum Antworten