bei ChildFrame Rahmen weg machen



  • Hi!

    Ne ganz blöde Frage: Habe in meiner MDI Anwendung ein FormView drin. Nun hat dieses ClientFrame aber immer so einen eingesunkenen Rahmen drum herum. Wie bekomme ich den weg, so dass das ganze dann wie ein normales Dialogfenster aussieht?

    mfg,
    Bloops



  • Hier meine Lösung, vielleicht nicht elegant, aber sie funktioniert:

    BOOL CBasisChildFrame::PreCreateWindow(CREATESTRUCT& cs)
    {
    	// Das Fenster muss maximiert sein!!!
    	cs.style = WS_CHILD | WS_VISIBLE;
    
    	if( !CMDIChildWnd::PreCreateWindow(cs) )
    		return FALSE;
    
    	return TRUE;
    }
    


  • Hmm... das klappt nicht... Ich habe immer noch diesen abgesenkten Rahmen da drum herum 😕 Eigentlich bräuchte ich ja das hier, aber auch hier bleibt der Rahmen:

    cs.style = WS_OVERLAPPEDWINDOW;
    

    Aber elegant finde ich deine Lösung schon, wenn sie klappen würde. Was hat eigentlich dein "Muss maximiert sein!!!" zu bedeuten? Vielleicht bin ich auch einfach zu blöd. Jemand noch eine andere Idee?



  • Okay, wer lesen kann ist klar im Vorteil:
    Ich habe dir nur die Hälfte der Funktion geschickt, der andere Teil ist wohl eher der, der dich interessiert.

    Ganz grosses Sorry!

    Hier jetzt die komplette Funktion:

    BOOL CBasisChildFrame::PreCreateWindow(CREATESTRUCT& cs)
    {
    	// ZU ERLEDIGEN: Ändern Sie hier die Fensterklasse oder das Erscheinungsbild, indem Sie
    	//  CREATESTRUCT cs modifizieren.
    
    /*	CWnd* pMainWnd = AfxGetMainWnd();
    	ASSERT(pMainWnd);
    	if (!pMainWnd)
    	{
    		return FALSE;
    	}
    
    	CClientDC dc(pMainWnd);
    	int nXRes = dc.GetDeviceCaps(HORZRES);
    	int nYRes = dc.GetDeviceCaps(VERTRES);
    
    	cs.cx = nXRes;
    	cs.cy = nYRes;
    	// Position (-2,-2) damit man die hässliche schwarze Kante nicht sieht.
    	cs.x  = -2;
    	cs.y  = -2;
    */
    	// Das Fenster muss maximiert bleiben!!!
    	cs.style = WS_CHILD | WS_VISIBLE;
    
    	if( !CMDIChildWnd::PreCreateWindow(cs) )
    		return FALSE;
    
    	return TRUE;
    }
    

    Das ist wirklich viel getrickst. Ich glaube, der abgesenkte Rahmen ist das, was ich hier "schwarze Kante" nenne.

    Ich habe bei Rahmen gleich an den normalen "Fensterrahmen" gedacht.

    Achtung, die Lösung ist nur mit maximiertem MDI-Fenster getestet.

    Hoffe, das ich diesmal besser geholfen habe. 😞



  • Hm... aber nur maximiert bringt mir nichts...
    Ich dachte eher so an folgendes:

    mike84 schrieb:

    Hi!
    Ich hoffe ich habe dich richtig verstanden.

    BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) 
    {
    // TODO: Speziellen Code hier einfügen und/oder Basisklasse aufrufen
    if (!CFrameWnd::OnCreateClient(lpcs, pContext))
       return FALSE;
    
    GetDlgItem (AFX_IDW_PANE_FIRST)->ModifyStyleEx(WS_EX_CLIENTEDGE, 0, SWP_FRAMECHANGED);
    
       return TRUE;
    }
    

    OnCreateClient Per klassenassi einfügen

    mfg

    Aber das ist halt für SDI und mit MDI klappt das nicht und ich habe keine Ahnung, wie man das verändern muss...



  • Ah! Hilfe, es klappt doch bestens... Blöd wie ich bin hatte ich das in die MainFrame-Klasse und nicht in die ChildFrame-Klasse eingebunden...


Anmelden zum Antworten