Öffnen von einer Datei ect.



  • ich habe es gemerkt
    fehler weg
    Jetzt zeigt es mir nur ein leeres DF an

    denke das es an der 1. if-schleife hängt weiter läuft er nicht.
    if( m_dbitmapdlg.DoModal() = IDOK)

    m_dbitmapdlg bezieht sich auf die Klasse des zweiten Fensters
    was kann ich statt desen noch nehmen, in der if-schleife oder brauche ich die
    gar nicht??
    könnt ihr mir ein bsp. zeigen??



  • Die ESC-Sequence hat nichts mit VC++ zu tun sondern sind Grundlagen von C/C++.

    Mit "\" wird nunmal eine ESC-Sequence eingeleitet. Um das zu umgehen muss man noch ein "\" voranstellen. Also "\"
    Hat der string 2 "\" also "\" braucht man dann 4 "\\\" u.s.w.



  • Hättest du nicht 3 Threads aufgemacht dann hättest du die Antwort

    DoModal öffnet den Dialog und kehrt erst zurück wenn dieser geschlossen wird.

    Dort wo du eine eine Instanz des 2ten Dlg anlegst kannst du dann vor DoModal dein Bitmap übergeben.
    Oder das Bitmap gleich im 2ten Dlg laden. (bester Ort dafür ist OnInitDialog)



  • das mit den Escape-frequenzen hab ich ja soweit verstanden.
    Es funktioniert ja auch (vielleicht)
    Jetzt zeigt er aber ein leeres D-Fenster an.
    Ich habe mal probiert er springt nicht in die 1. if-schleife.
    siehe oben.
    und in der wird ja z.B. auch das Bild eingelesen.

    Hier nochmal die ganze if-schleife

    if (m_dbitmapdlg.DoModal() == IDOK)
    {
    // Gewählten Dateinamen ermitteln
    m_sBitmap = "k:\\\...\\bitmap\\2.bmp";

    // Gewählte Bitmap-Datei laden
    HBITMAP hBitmap = (HBITMAP) ::LoadImage(AfxGetInstanceHandle(),
    m_sBitmap, IMAGE_BITMAP, 0, 0,
    LR_LOADFROMFILE | LR_CREATEDIBSECTION);

    // Ist Handle für das geladene Bild gültig?
    if (hBitmap)
    {

    // Aktuelles Bitmap löschen
    if (m_bmpBitmap.DeleteObject())
    // War Bitmap vorhanden, lösen
    m_bmpBitmap.Detach();
    // Aktuell geladenes Bitmap mit Bitmap-Objekt verbinden
    m_bmpBitmap.Attach(hBitmap);
    //zweites Fenster öffnen
    // m_dbitmapdlg.DoModal();
    }

    }



  • Hallo!

    Jetzt muss ich mich mal einmischen:

    Lieber Kobold, woher hast du den Ausdruck "if-Schleife"? 😮

    Abgesehen davon, dass er nicht korrekt ist (worauf ich jetzt nicht weiter eingehe) war er in meiner TAFI Klasse sehr beliebt (- allerdings nicht bei den Lehrern.)

    Das heisst für mich:
    Entweder warst du in meiner Klasse bzw. kennst jemanden davon - oder diese Wortkombination ist echt faszinierend.

    Sorry, aber bevor ich vor Neugier platze musste das mal raus.



  • Nochmals:
    Wenn du einen Dialog öffen willst der ein eigenes Bitmap hat dann musst du das Bitmap vorher laden.

    if (m_dbitmapdlg.DoModal() == IDOK) // Hier wird der Dialog geöffnet
    { 
    
    // Hier bist du wenn er wieder geschlossen wird
    


  • sorry wegen diesem Ausdruck nur ist der mir am geläufigsten,
    ich war aber weder in deiner Klasse noch habe ich den namen deiner Klasse schonmal gehört.

    P.S. die die ich kenne sagen das fast alle so, sogar die lehrer

    Übrigens muss ich mich mal bedanken bei Unix, ohne ihn wäre ich noch nicht so weit und wenn ich das irgendwann verstehe (sprich einen meter mit meinen stuhl zur seite fahre) seit ihr mich auch erstmal los, zumindest mit diesem Problem.



  • Das ist mir klar mit dem DoModal und dem laden vorher, er macht es nur nicht
    wenn ich es lade vor der schleife hab ich einen fehler in der schleife zeigt es mir ein leeres df an.....

    ich muss doch ganz schön nerven



  • Die Schleife hat nichts mit dem Anzeigen deinen Bitmaps in dem 2ten Dialog zu tun.

    Die Schleife von dir wird nur duchlaufen wenn im 2ten Dialog der OK-Button gedrückt wird.



  • er durchläuft sie aber nicht



  • Poste mal die gesamte Funktion



  • void CLala12Dlg::OnOpen() 
    {
    	// TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen
        // Dialogfeld Öffnen erzeugen
    
    	if (m_dbitmapdlg.DoModal() == IDOK)
    	{	
            // Gewähltes bitmap ermitteln
        m_sBitmap = "k:\\\\...\\bitmap\\2.bmp";
    
    	// Dialogfeld Öffnen anzeigen und Ergebnis übernehmen
    
             // Gewählte Bitmap-Datei laden
             HBITMAP hBitmap = (HBITMAP) ::LoadImage(AfxGetInstanceHandle(),
                 m_sBitmap, IMAGE_BITMAP, 0, 0, 
                 LR_LOADFROMFILE | LR_CREATEDIBSECTION);
    
             // Ist Handle für das geladene Bild gültig?
    		if (hBitmap)
    		{
    
                // Aktuelles Bitmap löschen
                 if (m_bmpBitmap.DeleteObject())
                     // War Bitmap vorhanden, lösen
                     m_bmpBitmap.Detach();
                 // Aktuell geladenes Bitmap mit Bitmap-Objekt verbinden
                 m_bmpBitmap.Attach(hBitmap);
    	}
    
    	 }
    	// gibt den Pfad wieder
    //	MessageBox(m_ldFile.GetPathName(), "Pfad der Datei", MB_OK|MB_ICONINFORMATION);
    }
    


  • Problem gelöst alles funktioniert

    DANKE 🙂


Anmelden zum Antworten