SDI & CSplitterWnd



  • Hallo,

    ich habe eine SDI-Anwendung OHNE Doc/View-Unterstützung.
    Beim Programmstart zeichne ich ganz normal über die OnDraw()-Methode des ChildViews in das Fenster. Funzt alle super. Nun möchte ich aber, dass nach iner bestimmten Aktion - ein User loggt sich ein - der Client-Bereich horizontal gesplittet wird. Links soll dann eine Art Outlook-Leiste rein und rechts sollen dann alle Informationen etc. angezeigt werden. Ich hab das Splitten in die Methode eines Menüpunktes gepackt:

    void CMainFrame::OnLogin() 
    {
        CLoginDlg dlg; //kleiner Dialog zum einloggen. IDOK wenn Userdaten OK sind
    
        if(dlg.DoModal() == IDOK)
        {
            theApp.m_User.m_sUsername = dlg.m_sUser;
            theApp.m_User.m_sPassword = dlg.m_sPassword;
    
            if(!m_wndSplitter.CreateStatic(this, 1, 2))
            {
                MessageBox("### ERROR ###", "Schwerwiegender Fehler", MB_ICONSTOP);
                return;
            }
    
            m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CControlView), CSize(150,500), NULL);
            m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CInformationView), CSize(500,500), NULL);
    
            //Fenster neuzeichnen (funzt net)
            m_wndSplitter.GetPane(0,1)->Invalidate();
        }
    }
    

    Wichtig wäre wohl noch zu erwähnen, dass CInformationView und CControlView von CView abgeleitete Klassen sind und m_wndSplitter ein CSplitterWnd-Objekt ist.
    Das Splitten funktioniert wunderbar, allerdings kann ich die Splits weder sehen noch mit ihnen arbeiten. 😕

    Kann mir ja jemand helfen?

    MfG
    Happosai

    [ Dieser Beitrag wurde am 22.04.2003 um 18:13 Uhr von Happosai editiert. ]



  • Dann liegt Dein Splitter wohl 'hinter' dem View, in das Du vorher gezeichnet hast!



  • Hallo,

    Ich glaub, so langsam blick ich das Thema Splitten nicht mehr. 😮 Kennt irgendjemand ein gutes und ausführliches Tutorial zu diesem Thema? Ist ja schrecklich, wenn man sich von MSDN-Artikel zu Artikel hangelt und nicht weiß, was man macht. 🙄

    MfG
    Happosai



  • Was hat denn das jetzt mit Splitten zu tun?
    Du hast ein MainFrame, darin ein Childview, welches dem MainFrame bekannt ist und welches auch resized wird, wenn sich das MainFrame resized.
    Jetzt legst Du ein neues Child von MainFrame an, welches sich nun nicht mehr automatisch positionieren kann, weil das ja für das Childview reserviert ist!
    Nun wird das Childview als letztes gezeichnet, also nach dem Splitter und deshalb ist das Splitterwnd nicht sichtbar.



  • Hi!
    Probier mal GetPane(0,1)->SendMessage(WM_PAINT);

    mfg mike



  • Original erstellt von RenéG:
    Was hat denn das jetzt mit Splitten zu tun?

    Na ja, ich hab ja auch nicht untätig zu Hause gesessen und abgewartet. Hab ja selbst noch alles mögliche ausprobiert, die ganzen Methoden hin und her verschoben und und und. Im Endeffekt hab ich das "Splitten" ja geschafft, hab aber trozdem noch Probleme, mit den einzelnen Views zu arbeiten. 😞

    MfG
    Happosai



  • Hat sich erledigt.

    cs.dwExStyle &= ~WS_EX_CLIENTEDGE;
    

    hat gefehlt.

    MfG
    Happosai


Anmelden zum Antworten