Öffnen von einer Datei ect.



  • Ok, hier sagt er halt eben nur das der öffnen-dialog geöffnet werden soll in dem halt nur bitmaps angezeigt werden soll, hast recht.

    if (m_ldFile.DoModal() == IDOK)
    {
    // Gewählten Dateinamen ermitteln
    m_sBitmap = m_ldFile.GetPathName();
    // Gewählte Bitmap-Datei laden
    HBITMAP hBitmap = (HBITMAP) ::LoadImage(AfxGetInstanceHandle(),
    m_sBitmap, IMAGE_BITMAP, 0, 0,
    LR_LOADFROMFILE | LR_CREATEDIBSECTION);

    das ist es schon eher oder...



  • Und das ist jetzt der 3te Thread zum gleichen Thema 😡

    Halte dich bitte an die Forumsregeln.



  • würde ich ja gerne, aber wenn meine anderen Beiträge nicht beachtet werden..
    eine antwort hat wohl keiner darauf, oder.
    Ich weiss es nicht und aus dem FAQ werde ich nicht schlau. 😮
    😞

    Dann kanst du mal ein Push in deinem ersten Thread machen aber nicht einen neuen.

    Mit dem Filedialog hollst du dir einen Pfad. Diesen bekommt deine Bitmapladefunktion. Wenn du den Filedialog nichts möchtest dann gibt der Bitmapladefunktion gleich einen von dir definierten Pfad auf eine Bitmapdatei.



  • und wie schreibe ich das mit Pfad??

    ich meine wo genau hin und vor allen wie



  • OH Habe bemerkt das ich nichtzitiert habe sondern deinen Betrag editiert.
    Na macht ja nichts. Hast es eh selbst mitbekommen.

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


  • Das muss jetzt aber weg oder:

    CFileDialog m_ldFile(TRUE, ".bmp", m_sBitmap,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, _T("Bitmap-Dateien (.bmp)|.bmp||"),this);

    aber was mach ich dann aus demKopf der if-schleife??

    if (m_ldFile.DoModal() == IDOK)



  • weglassen
    Ich empfehle dir aber dich zuerst mit den Grundlagen zu beschäftigen.
    www.mut.de -> leseecke -> VC++ in 21 Tagen



  • Das buch habe ich schon hinter mir, aber auf wirklich echte problem liefert das keine antwort...

    wenn ich das weg mache zeigt er das bild nicht mehr an und gibt einen fehler aus
    warning C4129: 'S' : Nicht erkannte Folge von Escape-Zeichen

    was soll das?? (der fehler ist in der zeile wo ich den pfad angebe)



  • Zeig mal deinen Code mit Pfad



  • Code:

    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);
    .
    .
    .





  • ich glaub das ist nichts für mich das VC++

    ich habe doch den doppelten \\

    oder meinst du das ich mit dem Zeiger



  • 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


Anmelden zum Antworten