Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Eigene Dateiendung automatisch öffnen

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
15.07.2008, 10:00 Uhr
~T_om
Gast


Hallo,

ich habe mit C++ einen kleinen Texteditor geschrieben.
Wenn ich den Editor gestartet habe, kann ich über ein Menu "Datei -> öffnen" auch Dateien in den Editor laden.

Allerdings möchte ich meine eigene Dateiendung entwerfen und diese dann auch automatisch mit meinem Programm öffnen können.

Ich habe also zu Testzwecken mal die Dateiendung .abc genommen.
Da mein Betriebssystem diese Endung nicht kennt, fragt es mich mit welchem Programm es die Datei öffnen soll.
Jetzt kann ich mein Programm angeben und dann wird mein Programm ja auch gestartet.
Soweit ist das alles kein Problem.

Aber ich möchte, dass dann der Inhalt der Datei auch direkt in mein Programm geladen wird.
Also so, wie es bei jedem anderen Texteditor (z.B. Notepad) der Fall ist.
Da muss man ja nicht auch nochmal extra auf "Datei -> öffnen" gehen.

Kann mir da jemand weiterhelfen ?

Viele Grüße, Tom
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
15.07.2008, 11:54 Uhr
Oliver
S2-Pixelgeneral


Normalerweise werden solche Dateien dem Programm als Argument übergeben (also der Pfad der Datei). Weiß aber jetzt nicht, wie man die bei MFC abfragt, via GetCommandLine() wie's aussieht...
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
15.07.2008, 15:17 Uhr
mmc20
puss in boots


hi, du solltest (wie schon gesagt) mit GetCommandLine() dir die argumente in einen string holen. und diesen dann nach deiner datei-erweiterung dursuchen (da ja auch versucht werden kann andere formate damit zu öffnen). hab hier zwar nur ein uraltes bsp. aber als anhaltspunkt könnte es noch dienen...

C++:
void CDeinProject::ParseCmdLine()
{
    CString csFilename="";
    CString tmp, csCmdline = CString( GetCommandLine() );
    csCmdline.MakeLower();
    int res = csCmdline.Find( ".abc ");
    if ( res > -1 ) {
        tmp = csCmdline.Left( csCmdline.Find(".abc")+4 );
        res = tmp.ReverseFind('\"');
        csFilename = tmp.Right( tmp.GetLength()-res-1 );
    } else
        return;
// hier jetzt den filenamen deiner lade-funktion übergeben
// oder zb. Serialisieren ?
    CFile file;
    if ( file.Open( csFilename, CFile::modeRead ) ) {
//        CArchive ar( &file, CArchive::load );
//        ar >> deineVariablen;
        file.Close();
    } else {
        MessageBox( "Daten können nicht gelesen werden.", " DeinProject - Datei laden", MB_ICONERROR|MB_OK );
    }
    SetWindowText(" DeinProject - "+file.GetFileTitle() );
    UpdateData( FALSE );
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
16.07.2008, 16:01 Uhr
~T_om
Gast


hallo

ich habs jetzt gelöst
ein bisschen anders, aber es klappt (auch)

für alle die es interessiert, ein Beispiel das die "angeklickte" Datei ausgibt:

String^ str = Environment::CommandLine;
array<String^>^ parameter = str->Split('"');
MessageBox::Show(parameter[3]);

"Commandline" übergibt eine Zeichenkette bestehend aus: "Pfad des Programms" "Pfad der Datei"

mit "split" teil ich diese zeichenkette auf und kann damit meinen gewünschten Dateipfad zum öffnen nutzen

mit einer einfachen überprüfung der länge des arrays mit "parameter->Lenght" kann ich dann entscheiden ob das Programm direkt gestartet wurde (Length=3) oder durch das anklicken der Datei (Length=5)

vielen dank für alle eure antworten und hilfen !!

viele grüße, tom
 
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: