Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Bei Doc/View als .ini speichern

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
14.08.2004, 14:33 Uhr
docreggae



Hallo.

Ich habe einen kleinen Editor geschrieben, der eine Vereinfachung für den User sein soll, damit dieser die Ini-Dateien nicht erstellen muss. Diese werden dann von einem anderen Programm eingelesen und weiterverarbeitet.
Bis auf das speichern funktioniert auch alles. Meine Anwendung ist zweigeteilt (links CView, rechts CListView), wesshalb ich Probleme habe, in meiner Doc an die Daten zu kommen. Folgendes stürtzt ab; der Debugger sagt dazu, dass das Handle von meinem View nicht existiert...

C++:
void CBuilderDoc::Serialize(CArchive& ar)
{
    CISPluginBuilderView view;

    if (ar.IsStoring())
    {
        MessageBox(NULL,view.GetName(),"test",MB_OK);
    }
    else
    {
        // ZU ERLEDIGEN: Hier Code zum Laden einfügen
    }
}



C++:
CString CBuilderView::GetName(void)
{
    CString str;
    m_edtName.GetWindowText(str);
    return str;
}


Den Text frage ich von einer Editbox ab, welche ich wie folgt erstellt habe:

C++:
m_edtName.Create( WS_VISIBLE | WS_CHILD | WS_BORDER, CRect(20,160,150,177),
        this, IDC_EDT_NAME);
    m_edtName.SetFont(font,TRUE);
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
14.08.2004, 18:56 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


du erstellst eine neue Instanz, welche uninitialisiert ist, du musst dir die aktuelle View per GetView (oder sowas) holen und diese verwenden
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
14.08.2004, 19:34 Uhr
Airdamn



Jo, Flo hat recht.
Musst Du in etwa so machen:


C++:
POSITION posView = this->GetFirstViewPosition();

if( posView )
    CISPluginBuilderView* pView = (CISPluginBuilderView*) this->GetNextView( posView );



Nun hast mit pView einen Zeiger auf Deine View!

Dieser Post wurde am 14.08.2004 um 19:35 Uhr von Airdamn editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
15.08.2004, 16:10 Uhr
docreggae



Hey, es funktioniert!!! 1000 mal danke, Jungs.
Jetzt habe ich aber ein weiteres Problem, was ich am Anfang nicht bedacht habe: Wie komme ich an den Pfad ran, den der User beim "Speichern unter" Dialog auswählt?

Dieser Post wurde am 15.08.2004 um 16:24 Uhr von docreggae editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
15.08.2004, 17:08 Uhr
Airdamn



ein CFileDialog hat Methoden wie:
- GetPathName()
- GetFileName()
- GetFileExt()
etc.

Die sollten Dir helfen

Dieser Post wurde am 15.08.2004 um 17:09 Uhr von Airdamn editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
15.08.2004, 17:32 Uhr
docreggae



Die kenne ich. Aber mein Problem ist, dass ich nicht weiß, wio der CFileDialog in einem Doc/View aufgerufen wird. In Serialize ja leider nicht...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
15.08.2004, 22:31 Uhr
Airdamn



Dann machste es einfach so:


C++:
void CSDIApp::Serialize(CArchive& ar)
{
    CFile* pFile = ar.GetFile();
    CString sDateipfad = pFile->GetFilePath();
    CString sDateiname = pFile->GetFileName();

    if (ar.IsStoring())
    {    // Code wird gespeichert
    }
    else
    {    // Code wird geladen
    }
}



 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
16.08.2004, 16:12 Uhr
docreggae



Das ist eine gute Idee! Thanx a lot!!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
16.08.2004, 17:41 Uhr
docreggae



Zu früh gefreut.
Wenn ich mir den Dateinamen von ar hole, dann kann ich meine Dateien leider nicht abspeichern, da "sie von einem anderen Prozess verwendet wird". Könnt ihr mir sagen, wie ich das umgehen kann?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: