CFormView via OnInitialUpdate() initialisieren

cappa555

Grünschnabel
servus allerseits,

ich habe eine SDI-Anwendung mit doc/view, neben diesem habe ich ein weiteres CSingleDocTemplate angelegt wobei die View-Klasse von CFormView abgeleitet ist. Darin ist ein Dialog als untergeordnet eingebettet. Jetzt geh ich in meinem Hauptmenü auf den entsprechenden link und das fenster öffnet sich auch. doch weder meine liste, noch meine gesetzten defaultwerte bei checkboxen sind sichtbar. sobald ich beispielsweise noch eine andere schriftart auswählen möchte, schmiert mir die anwendung vollends ab. ich initialisiere die liste (CListCtrl), sowie alles andere, in der CFormView abgeleiteten klasse unter OnInitialUpdate(), unter InitDialog() hat es immer problemlos funktioniert doch hier komme ich einfach nicht weiter.

Vielleicht kann mir ja jemand weiterhelfen woran das noch liegen könnte. OnInitialUpdate() wird ja eigentlich sofort nach OnCreate() aufgerufen was er auch aufruft und macht doch in die OnInitialUpdate() geht er einfach nicht hinein...
 

pschilling

Erfahrenes Mitglied
Hallo,

gehe nicht davon aus, dass OnIntialUpdate ausschließlich 1 mal aufgerufen wird!!

Zum Beispiel wird OnInitialUpdate für jedes neue Dokument aufgefufen.

Halte dir doch mal eine Membervariable vom Typ BOOL. (z.B. m_bInitialized.)

Setze diese im Konstruktor auf FALSE.

In deiner OnInitialUpdate prüfst du diese und initialisierts alles, was einmalig gemacht werden soll, falls diese Variable FALSE ist.

Setze Sie danach auf TRUE.

Beim nächsten OnInitialUpdate, wird dieser initialisierungs-Block dann übersprungen!

Vielleicht behebt dies ja einen Teil deiner Probleme ;-)

Grüße,

Pit
 

cappa555

Grünschnabel
hallo mal wieder ;)

habe alles so gemacht, das problem ist nur das er überhaupt nicht in die OnInitialUpdate() springt. sie wird kein einziges mal aufgerufen :confused:
 

cappa555

Grünschnabel
ich kannte das beispiel bereits und in diesem initialisiert er auch alle werte, allerdings möchte ich die CFormView Klasse in einem neuen fenster öffnen.
etwas wichtiges habe ich vielleicht noch vergessen zu erwähnen: die liste mit ihren defaultwerten wird bereits am anfang beim initialisieren der hauptanwendung gestartet und sofort auf HIDE gesetzt, das programm kann jederzeit aufgerufen werden und wird bei OnClose() nur versteckt und eben nicht beendet, die liste orientiert sich an einer audiospur über die aktuelle position des cursors. von daher muss ich es so machen.
 

pschilling

Erfahrenes Mitglied
Hi,

du willst eine CFormView in einem neuen Fenster öffnen ?

Warum, wieso, weshalb ?

Mach doch einfach eine von CDialog abgeleitete Klasse, starte diese modal, oder von mir aus auch nich modal... aber warum CFormView

Hilf mir, damit ich dir helfen kann ;-)..

Grüße,


Pit
 

cappa555

Grünschnabel
hi,

also ich wollte ein weiteres CSingleDocTemplate erstellen, da mein dialog einen eigenen IDR_MAINFRAME hatte und ein Template CView erwartet oder eine davon abgeleitete klasse.
habe es jedoch jetzt mit einem nichtmodalen dialog gelöst. er zeigt mir den dialog jetzt zwar an, allerdings im parentwindow, also meiner hauptanwendung, zudem kann ich keine buttons etc anklicken, die defaultwerte werden dafür richtig gesetzt in der initdialog(). habe hier mal den code wo der link zum dialog führt und das fenster erstellt werden müsste:

Code:
void CTestView::OnScriptEditor()
{
    if(m_pNonModalDlg == NULL)
    {
        m_pNonModalDlg = new CAudioScriptView(this);
        m_pNonModalDlg->Create(CAudioScriptView::IDD);
        m_pNonModalDlg->ShowWindow(SW_NORMAL);
    }
}

m_pNonModalDlg ist hierbei vom Typ CAudioScriptView*
die Member-Variable wird im Konstruktor auf NULL gesetzt und im Dekonstruktor wieder gelöscht.
Aber warum erstellt er mir hier kein neues Fenster?
 

cappa555

Grünschnabel
Topic ----------->>>>CLOSED<<<<---------------

das thema hat sich erledigt, aus unerklärlichen gründen wurden meine änderungen im dialog nicht in die ressource datei übernommen, somit stand weiter CHILD anstatt MODALFRAME drin!

dennoch danke für die hilfe pit