Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo,

ich suche nach einer Möglichkeit, ein Dokument zu laden und anzuzeigen - praktisch wie der "Öffnen"-Dialog, nur dass ich den Pfadnamen nicht per Öffnen-Dialog sondern mittels eines selbst erstellten Dialogs auswählen möchte.

Konstruktionen der Art

CMyApplicationDoc doc;

BOOL boolwert = doc.OnOpenDocument("d:\\dat\\test.dat");

führen logischerweise nur dazu, dass das Dokument in den Speicher geladen, aber nicht angezeigt wird, da ja keine View angelegt wird :(

Ich komm da einfach nicht weiter :confused:

Wer kann mir weiterhelfen?

(Es ist ein MDI-Programm.)

Grüße,

Technician

Geschrieben

Hi,

also ich kenn mich mit den MFC nicht sonderlich gut aus, es gibt also

bestimmt auch ne einfachere Lösung.

Wenn es sich bei deinen Dokumenten um Textdateien handelt kann man

doch ein EditView nehmen und den Text dort selber ausgeben.

Wenn du Bilddateien darstellen willst brauchst du kannst du sie

einfach selber per GDI in eine "normale" CView malen.

Gruß

Guybrush

Geschrieben
Originally posted by Guybrush Threepwood

Hi,

also ich kenn mich mit den MFC nicht sonderlich gut aus, es gibt also

bestimmt auch ne einfachere Lösung.

Wenn es sich bei deinen Dokumenten um Textdateien handelt kann man

doch ein EditView nehmen und den Text dort selber ausgeben.

Wenn du Bilddateien darstellen willst brauchst du kannst du sie

einfach selber per GDI in eine "normale" CView malen.

Gruß

Guybrush

Hi Guybrush;

das Öffnen der Dokumente (per "Datei öffnen"-Dialog) funktioniert ja bereits.

(Es handelt sich auch nicht um einfach ein Text- oder Bilddokument, sondern ich arbeite mit CFormView und stelle den Inhalt einer Textdatei dort in einem TreeView dar; is aber hierfür nicht weiter wichtig, wie das genau abläuft.)

Nur möchte ich jetzt über einen Button eine Datei eines ganz bestimmten Pfades (also nicht auswählbar) öffnen.

Wenn ich nun schreibe

CMyApplicationDoc doc;

BOOL boolwert = doc.OnOpenDocument("d:\\dat\\test.dat");

wird das Dokument in den Speicher geladen, aber nicht angezeigt wird, da ja keine View angelegt wird.

Ich bräuchte also eine View, die mit dem Dokument verknüpft ist...

Geschrieben
Originally posted by Klotzkopp

Eigentlich sollte sich CDocTemplate::CreateNewDocument um alles kümmern.

Ich möchte aber kein neues Dokument anlegen, sondern eines öffnen.

Und dazu müsste ich logischerweise einen Pfad übergeben.

CDocTemplate scheint mir aber keine derartige Methode zur Verfügung zu stellen...

Geschrieben
Originally posted by Guybrush Threepwood

Was ist mit CDocTemplate::OpenDocumentFile?

ich habe jetzt einen Menüpunkt ins Programm aufgenommen, der die Datei d:\dat\test.txt öffnen soll:


void CMainFrame::OnMenOpen() 

{


CDocTemplate::OpenDocumentFile("d:\\dat\\test.txt");


}

hierbei bekomme ich die Compiler-Fehlermeldung:

error C2352: 'CDocTemplate::OpenDocumentFile' : Unzulaessiger Aufruf einer nichtstatischen Member-Funktion

Geschrieben
Originally posted by Klotzkopp

OpenDocumentFile ist nicht statisch. Du musst eine deiner Template-Instanzen für den Aufruf verwenden. Die App-Klasse hat üblicherweise Zeiger auf alle Templates als Member.

ich finde hier allerdings keine Membervariablen, sondern alles nur im cpp-File:


BOOL CMyApp::InitInstance()

{



...	


	// Dokumentvorlagen der Anwendung registrieren. Dokumentvorlagen

	//  dienen als Verbindung zwischen Dokumenten, Rahmenfenstern und Ansichten.


	CMultiDocTemplate* pDocTemplate;

	pDocTemplate = new CMultiDocTemplate(

		IDR_BACKSLTYPE,

		RUNTIME_CLASS(CBackslashDoc),

		RUNTIME_CLASS(CChildFrame), // Benutzerspezifischer MDI-Child-Rahmen

		RUNTIME_CLASS(CBackslashView));

	AddDocTemplate(pDocTemplate);


}


wie kann ich darauf von

void CMainFrame::OnMenOpen()

{

//hier soll geöffnet werden

}

zugreifen?! :confused: :confused:

Geschrieben

Mach aus pDocTemplate ein Member von CMyApp.

Alternativ kannst du dich mit CWinApp::GetFirstDocTemplatePosition und GetNextDocTemplate durch die Templates hangeln.

Mit AfxGetApp() kommst Du von überall her an einen Zeiger auf deine App-Instanz, den musst du nur noch nach CMyApp* casten.

Geschrieben
Originally posted by Klotzkopp

Mach aus pDocTemplate ein Member von CMyApp.

Alternativ kannst du dich mit CWinApp::GetFirstDocTemplatePosition und GetNextDocTemplate durch die Templates hangeln.

Mit AfxGetApp() kommst Du von überall her an einen Zeiger auf deine App-Instanz, den musst du nur noch nach CMyApp* casten.

Danke! :)

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...