Programm neu initialisieren



  • Hallo, gibt es eine Möglichkeit das Programm neu zu initialisieren, wenn man in einem Dialog auf den OK-Button klickt?
    Dabei soll lediglich die OnInitUpdate-Methode der CFormView und der CLeftView aufgerufen werden. Das Startbild der Software soll nicht wieder erscheinen.
    Hat jemand eine Idee?



  • maRKus23 schrieb:

    Hallo, gibt es eine Möglichkeit das Programm neu zu initialisieren, wenn man in einem Dialog auf den OK-Button klickt?
    Dabei soll lediglich die OnInitUpdate-Methode der CFormView und der CLeftView aufgerufen werden.

    Hast du schon versucht, diese Methoden selber (in der OnOK()-Behandlung des genannten Dialogs - oder nach Rückkehr seines DoModal()-Aufrufs) anzusprechen?



  • Nein, in diesem Projekt noch nicht.
    Aber ich denke mal das es nicht funktionieren wird das OnInitUpdate() ja protected ist, oder?



  • Hab die OnInitialUpdate() jetzt mal als public deklariert.
    Wenn ich sie dann allerdings aufrufen möchte gibts ein ASSERT.

    BOOL CImageList::Attach(HIMAGELIST hImageList)
    {
      ASSERT(m_hImageList == NULL);
    }
    

    Warum kommt dieses ASSERT?

    CLeftView::CLeftView()
    {
    	/*create the image list*/
    	m_pImageListTree = NULL;
    	m_pImageListTree = new CImageList;    
    }
    
    CLeftView::~CLeftView()
    {
    	/*delete the image list*/
    	DeleteObject (m_pImageListTree);	
    	m_pImageListTree = NULL;
    }
    


  • Anscheinend machen die Init-Funktionen doch mehr als du für einen Programm-Reset benötigst. Wie wäre es, wenn du die Initialisierungen ver Views jeweils in eine eigene Methode auslagerst und diese bei einem Reset dann aufrufst.

    PS: Die beiden m_pImageListTree = NULL; Aufrufe sind übrigens sinnlos - im Ctor wird der Wert SOFORT mit einer gültigen Adresse überschrieben (und wenn new fehlschlägt, wird dein View sofort demontiert), im Dtor wird als nächster Arbeitsschritt der Speicher des View's freigegeben.



  • Versuche jetzt mal nachdem der Dialog beendet ist die Initialisierung aufzurufen.
    Ich rufe also nicht OnInitialUpdate auf, sondern packe die Initialisierungen in eine andere Methode. Bei drücken von OK oder Cancel setzte ich eine globale Variable in CxxxApp, damit ich weiß welcher button gedrückt wurde.
    Könnte vllt funktionieren!?!



  • Nee das funktioniert auch nicht. Meine View ist auch nach DoModal() nicht aktiv und die Windows die ich Updaten will existieren nicht.


Anmelden zum Antworten