Öffnen von einer Datei ect.



  • Hi,

    das andere problem hat sich erledigt. 😃
    Jetzt habe ich aber ein neues... 😞
    Ich möchte das ein bestimmter Pfad nur gegangen wird um etwas zu öffne,d.h. ich möchte vorher nicht gefragt werden was geöffnet werden soll, sondern einfach ein z.B. Bitmap angezeigt bekommen, das irgendwo auf der Platte liegt.
    Über C:/.... geht das nicht oder.
    könnt ihr mir einen Tip geben 🙄

    Danke schon mal



  • 😕



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

    kann ich ein Bitmap frei wählen das irgendwo auf dem Rechner liegt, ja
    ich möchte aber das nicht gewählt wird, ich möchte das ein bestimmtes angezeigt wird, das vordefiniert ist. Wie funktioniert das 😕



  • Zeig mal wie du es öffnest und anzeigst. Ein Filedialog selektiert nur einen Pfad auf eine Datei und öffnet nicht. SChon garnicht zeigt er das Bitmap an.



  • 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();
    }

    }


Anmelden zum Antworten