Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » SplitterWnd bei SDI ohne Doc/View

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
12.01.2005, 20:05 Uhr
xXx
Devil


Wie die frage schon sagt. Kann man das MainFrame auch ohne Doc/View Struktur Splitten? Wenn ich zum Splitten:

C++:
CRect cr;
    GetClientRect( &cr);

    if ( !m_mainSplitter.CreateStatic( this, 1, 2 ) )
    {
        MessageBox( "Error setting up splitter frames!",
                      "Init Error!", MB_OK | MB_ICONERROR );
        return FALSE;
    }

    if ( !m_mainSplitter.CreateView( 0, 0, RUNTIME_CLASS(CMainFrame), CSize(cr.Width()/2, cr.Height()), pContext ))
    {
        MessageBox( "Error setting up splitter frames!", "Init Error!", MB_OK | MB_ICONERROR );
        return FALSE;
    }

    if ( !m_mainSplitter.CreateView( 0, 1, RUNTIME_CLASS(CMainFrame), CSize(cr.Width()/2, cr.Height()), pContext ))
    {
        MessageBox( "Error setting up splitter frames!", "Init Error!", MB_OK | MB_ICONERROR );
        return FALSE;
    }
    m_bInitSplitter = TRUE;


Bei der OncreatClient und dann wird einer der Fehler aufgerufen. Geht das nicht, oder was ist das Problem?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
13.01.2005, 18:08 Uhr
xXx
Devil


Keine ne Ahnung, nochnaicht einaml SpaceLord, der mich zum MFC lernen verdonnert hat weil ich es angeblich nicht könnte.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
13.01.2005, 21:02 Uhr
mike
Pinguinhüpfer
(Operator)



Zitat:

Wenn ich zum Splitten:
Bei der OncreatClient und dann wird einer der Fehler aufgerufen. Geht das nicht, oder was ist das Problem?


Bitte Sätze fertig schreiben

RUNTIME_CLASS(CMainFrame)
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wcemfc/htm/csplitt_8.asp

Zitat:

Specifies the CRuntimeClass of the new view.


--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
14.01.2005, 14:46 Uhr
xXx
Devil


ICh weiß das da Eigentlich ne andere Klasse rein soll..... in dem Beispiel was ich dafür benutzt hab, ist das nur falsch, bei allen anderen ist es aber richtig.....

In der OnCreateFunktion wird der 2. Init Error aufgerufen, und mir war nicht klar das ich unbedingt ne andere Klasse nehmen muss und die dann als 2. Window angezeigt wird....

Aber dann mach ich jetzt also ne neue Klasse in der ich dann meine Funktionen aufrufe und dann in der OnCreateClient kommt die dann als Splitt Window, richtig verstanden?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
14.01.2005, 17:12 Uhr
xXx
Devil


Dann müsste der folgende Code ja nen anständiges ergebnis erziehlen:

C++:
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
    CRect cr;
    GetClientRect( &cr);

    if (!m_mainSplitter.CreateStatic(this,1,2))
    {
        MessageBox("Error setting up splitter frames!","Init Error",MB_OK | MB_ICONERROR);
        return FALSE;
    }

    if (!m_mainSplitter.CreateView(0,0,RUNTIME_CLASS(CSide),CSize(INFOBAR_SIZE,cr.Height()),pContext))
    {
        MessageBox("Error setting up splitter frames!","Init Error",MB_OK | MB_ICONERROR);
        return FALSE;
    }

    if (!m_mainSplitter.CreateView(0,1,RUNTIME_CLASS(CFront),CSize(INFOBAR_SIZE,cr.Height()),pContext))
    {
        MessageBox("Error setting up splitter frames!","Init Error",MB_OK | MB_ICONERROR);
        return FALSE;
    }

    m_bInitSplitter = TRUE;
        
    return TRUE;
}

void CMainFrame::OnSize(UINT nType, int cx, int cy)
{
    CFrameWnd::OnSize(nType, cx, cy);
    
    CRect cr;
    GetWindowRect(&cr);

    if (  m_bInitSplitter && nType != SIZE_MINIMIZED )
    {
        m_mainSplitter.SetRowInfo( 0, cy, 0 );
        m_mainSplitter.SetColumnInfo( 0, cr.Width() / 2, 50);
        m_mainSplitter.SetColumnInfo( 1, cr.Width() / 2, 50);

        m_mainSplitter.RecalcLayout();
    }
    
}


Also, er meldet keinen Fehler beim Compillieren usw. aber ich hab das Programm gestartet und mein Problem ist das das MainFrame in der Mitte ist aber die Toolbar und unten die StatusBar sind durch Frames ersetzt und sind geteilt. Muss ich noch irgendwo was ändern damit der Code funktioniert?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
14.01.2005, 22:22 Uhr
xXx
Devil


Ich wollte nicht noch einmal nen neuen Thread aufmachen daher kommt jetzt meine 2. Frage: Wie bekomme ich von einer CFrameWnd Klasse einen HWND Handler? Ich bekomms nicht hin, brauch aaber unbedingt einen HWND damit ich darin DirectX Initialisieren kann....

Also wie geht das?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: