SDI und Dialog



  • Hallo zusammen,

    ich habe ein Problem mit meiner (ersten) SDI anwendung.

    Ich habe eine SDI Anwednung mit einem CChildView erstellt. In dem ChildView zeichne ich eine Grafik via MemDC und das klappt auch soweit ganze gut.
    Nun wollte ich eine Toolbox (einfacher Dialog mit ein paar Elementeen) erstellen. Das habe ich mittels CDialog gemacht und der Aufruf funktioniert auch. Nur bekomme ich die Variablen des Dialogs nicht in mein CChildView. Nun steh ich wie der Ochs vorm Berg und weiß nicht was ich machen soll. Hab in dem ChildView meinen CDialog bekannt gemacht und bekomme auch Zugriff auf die Variable (Also keine Compiliermeldung oder Fehler) doch wenn ich mir im Debugger die Variable anschaue passiert da nix, wenn ich z.B. den Slider bewege. Habs mit CFormView versucht, aber da bekomme ich immer felermeldungen, dass ich auf protected nicht zugreifen kann....

    Weis einer Rat?

    Der Dialog soll nich Dockbar sein oder irgendwelchen schnickschnack. Einfach nur außerhalb des SDI eingeblendet werden.

    Danke schonmal



  • So hab alles zum Thema SDI hier im Forum überflogen und nichts brauchbares gefunden. Ich habs erstmal mittels einer Übergabefunktion im MainFrame gelöst.

    Sprich im CDialog rufe ich die Funktion Getter aus dem MainFrame auf.

    //CDialog
    void CToolsDlg::OnNMCustomdrawSliderX(NMHDR *pNMHDR, LRESULT *pResult)
    {
    	LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);
    
    	CMainFrame* dMain;
    	dMain = (CMainFrame*) AfxGetApp()->m_pMainWnd;
    	dMain->Getter();
    
    	*pResult = 0;
    }
    
    //CMainFrame
    void CMainFrame::Getter(void)
    {
    	m_wndView.m_Graph.x = m_wndTools.m_SliderX.GetPos();
           //usw.
    }
    

    Allerdings glaub ich es gibt eine schönere Lösung.


  • Mod

    Und warum machst Du den Dialog nicht als Kind des SDI Forms?
    Rufst den mit DoModal auf und das wars?

    Wenn er nicht modal sein soll, einfach mit Create erzeugen im View und Du hast den vollen Zugriff von dort aus?
    Warum das CMainFrame ins Spiel bringen?



  • Ich wusste es geht auch schöner.

    Wie macht man den Dialog denn als Kind des SDI Forms? Hab diesbezüglich Null Ahnung, da ich mich sonst nur mit kleinen Dialog-Anwednungen rumschlage und ich das da noch nich verwenden musste.

    Mir würde schon ein guter Link oder ein kurzes Bsp. reichen.

    Danke



  • Jetzt gehts ohne Umweg übers MainFrame sondern direkt im ChildView. Ist immer nen Akt die richtigen Stichworte für Google zu finden. Wens interessiert, hier der Link, der mir geholfen hat:

    http://www.codeproject.com/KB/dialog/modelesschild.aspx

    Ist zwar mit Doc/View erstellt, klappt aber auch ohne.


Log in to reply