Hintergrund für Child Window in MDI Programm



  • Hi,
    weiss jemand, wie man bei einem MDI Programm den Hintergrund in den Child Windows auf z.B. schwarz setzt? Ich möchte also nicht irgendeine Bitmap darstellen, sondern den gesamten default Hintergrund des Child Fenster schwarz haben.
    In der CChildFrame Klasse (vom Wizard erstellt) kann man in PreCreateWindow die Größe und Position einstellen, wie aber den Hintergrund?
    Vielen Dank für Eure Tips.
    Joerg



  • Meinst du das : (?)

    **How do I change the background color of a view?
    **
    To change the background color for a CView, CFrameWnd, or CWnd object, process the WM_ERASEBKGND message. The following code shows how:

    BOOL CSampleView::OnEraseBkgnd(CDC* pDC) 
    { 
        // Set brush to desired background color 
        CBrush backBrush(RGB(255, 128, 128)); 
    
        // Save old brush 
        CBrush* pOldBrush = pDC->SelectObject(&backBrush); 
        CRect rect; 
        pDC->GetClipBox(&rect); 
    
        // Erase the area needed 
        pDC->PatBlt(rect.left, rect.top, rect.Width(), rect.Height(), PATCOPY); 
        pDC->SelectObject(pOldBrush); 
    
        return TRUE; 
    }
    

    I solved the problem like this->

    HBRUSH dlgtest::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    { 
        switch (nCtlColor) 
        { 
            case CTLCOLOR_BTN: 
            case CTLCOLOR_STATIC: 
            { 
                pDC->SetBkMode(TRANSPARENT); 
            } 
            case CTLCOLOR_DLG: 
            { 
                CBrush* back_brush; 
                COLORREF color; 
                color = (COLORREF) GetSysColor(COLOR_BTNFACE); 
                back_brush = new CBrush(color); 
                return (HBRUSH) (back_brush->m_hObject); 
            } 
        } 
        return(CFormView::OnCtlColor(pDC, pWnd, nCtlColor)); 
    }
    

    Hoffe konnte dir helfen !

    Gruß
    :: NoName ::



  • Der OnEraseBackground() Tip passt für mein Problem.
    Vielen Dank
    Jörg


Anmelden zum Antworten