Offene Dokumente in einer MDI-Anwendung ermitteln



  • Hallo!
    Ich bin am basteln einer MDI-Anwendung.
    Nun stehe ich vor einem Problem: Wenn der Benutzer meines Programms mehrere Dokumente offen hat, und im Menü unter Extras -> Optionen etwas ändert, dann sollen diese Änderungen unmittelbar an alle grade geöffneten Dokumente weitergeleitet werden. Oder anders gesagt: Wie kann ich ALLE geöffneten Dokumente benachrichtigen, wenn der Benutzer die Optionen geändert hat? Es kann ja nicht sein, dass der Benutzer die Dokumente schliessen und wieder öffnen muss, dass die Änderungen in Kraft treten.

    Grüsse



  • Wenn CMyDocument deine von CDocument abgeleitete Klasse ist:

    POSITION	posTemplate, posDocument;
    CDocTemplate	*pDocTemplate;
    CDocument	*pDoc;
    
    posTemplate = GetFirstDocTemplatePosition();
    
    while (posTemplate)
    {
      pDocTemplate = GetNextDocTemplate( posTemplate ); 
      posDocument = pDocTemplate->GetFirstDocPosition();
    
      while (posDocument)
      {
        pDoc = pDocTemplate->GetNextDoc(posDocument);
    
        if ( pDoc && pDoc->IsKindOf(RUNTIME_CLASS(CMyDocument)) )
        {
          ((CMyDocument*)pDoc)->...; //Hier Zugriff auf CMyDocument
        }
      }
    }
    

    Und beachten das ein CDocument mehrere geöffnete CView haben kann!
    (im Programm meistens über Menü "Fenster" -> "Neues Fenster")
    So kommt man in CMyDocument an die geöffneten CMyView:

    POSITION pos = GetFirstViewPosition();
    CMyView	*pView;
    
    while (pos != NULL)
    {
     pView = (CMyView*)GetNextView(pos);
     pView->...; //Zugriff auf CMyView	
    }
    


  • Hey, danke @Softwaremaker!
    Ich probier' das gleich aus, aber ich denke es wird funktionieren!
    Herzlichen Dank also!

    Grüsse & schönen Tag noch


Anmelden zum Antworten