Ö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-Zeichenwas 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);
.
.
.
-
http://www.c-plusplus.net/forum/viewtopic.php?t=39458&highlight=c4129
m_sBitmap = "k:\\\\...\\bitmap\\2.bmp";
-
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 andenke 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.