Im Dialog ein CView erzeugen.



  • Hi,
    ich hab noch nicht lange mit mfc zu tun und hoffe ihr könnt diese für euch sicherlich banale Frage verschmerzen. Ich habe eine Single Document Anwendung. Im Dialog befindet sich ein OK Button. Wenn dieser angeklickt wird soll sich ein Fenster öffnen (CMyView). Durch eine Update Methode soll der Inhalt des Fensters erneuert werden. Leider bekomme ich nichts vernünftiges zustande. Ich hoffe ihr könnt mir hier weiterhelfen.

    // MyView.h
    class CMyView : public CView
    {
    protected:
      // Wie und Wo kann ich dieses Fenster erzeugen??
      CMyView();
      DECLARE_DYNCREATE(CMyView);
    }
    
    void CMyDlg::OnOK()
    {
    
      // CMyView erzeugen und darstellen. Wie kann ich das realisieren??
      // DECLARE_DYNCREATE(CMyView) --> :-( Wie kommt man an ein Objekt der Klasse??
      // CMyView::Create();
    
      CDialog::OnOK();
    }
    
    void CMyView::OnUpdate()
    {
      // Wird zum Neuzeichnen die Methode OnUpdate() oder OnDraw() genutzt?
      // Wie könnte man so etwas realisieren?
    }
    


  • Du solltest das in der InitInstance machen und dort das ergebnis deines DoModal Aufrufes Auswerten. Bei IDOK läuft dein Initialisierung ganz normal weiter und bei IDCANCEL machste halt was anderes. Oder hab ich das falsch verstanden, dann erklär mal etwas mehr über dein Programm, wo du den Dialog öffnest und warum dieser da is und so weiter.



  • Ok, erstmal vielen Dank für deine schnelle Antwort! In der CMyApp::InitInstance() wird schon das Ergebnis des Dialogs ausgewertet !? Im Dialog wählt der Nutzer über einen CFileDialog ein Bild aus. Dieses wird geöffnet und soll in einem von der Klasse CView abgeleiteten Objekt (CMyView: public CView) dargestellt werden (Wenn eine andere Möglichkeit existiert die sich dafür besser eignet, immer her damit.)

    D.h. wenn die Bilddatei geöffnet wird, soll ein Fenster aufpoppen in welchem das Bild dargestellt wird.

    Danach kann der Nutzer im Dialog verschiedene Buttons drücken, hinter denen verschiedene Bildtransformationen stehen (Weichzeichnen, Kantendetektor etc.). Demnach müsste der Inhalt des Viewobjekts im Anschluß aktualisiert werden.

    Oh mann, ich weiß echt nicht wie man sowas realisiert.

    Die CMyApp::InitInstance():
    [code]
    //MyApp.cpp ////////////////////////////////////

    BOOL CMyApp::InitInstance()
    {
    AfxEnableControlContainer();

    //...

    CMyDlg dlg;
    m_pMainWnd = &dlg;
    int nResponse = dlg.DoModal();
    if(nResponse == IDOK)
    {}
    else if(nResponse == IDCANCEL)
    {}

    return false
    }
    [\code]



  • Für deine Funktionalität die du haben willst bietet doch das Framework schon alles an. Was du suchst ist FileOpen und das bekommste doch automatisch wenn du deine Applikation mit dem Assistenten erstellst. Da sollteste dich vielleicht mal in die Problematik SDI-Window (oder so in der Art, halt der gegensatz zu MDI) einlesen. Wobei die Datenverwaltung über das Dokumennt läuft und der View nur die Anzeige macht.



  • ok, werd ich mal versuchen


Anmelden zum Antworten