Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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

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...

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...

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

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:

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.

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! :)

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.