MDI: Hintergrundfarbe einer ChildView



  • Hi,

    kann ich (und wenn ja, wie..) die Hintergrundfarbe der Child-Fenster einer MDI-Anwendung ändern? Ich hätte gerne ein Blau (#000066) 🙂

    PS.: Habe dazu leider nichts in der FAQ gefunden.

    Vielen Dank 😉



  • [gelöscht]



  • hi valen16,

    das ist super! *freu*
    .. und poste den source einfach hier, ich denke es gibt vielleicht noch andere die das interessiert.. 😉

    vielen dank, bis dann
    christian



  • [gelöscht]



  • Hallo valen16,

    leider funktioniert Deine Lösung nicht in meinem Projekt.
    Ich konnte allerdings auch keinen Fehler finden..
    Schade.

    Gruß,
    Christian



  • Hallo,

    ich habe eine Lösung gefunden. Für den Fall das es jemand anderen auch noch interessiert ..

    Um eine ChildView Farbig darzustellen, muss folgendes erledigt werden.
    (Ich gehe von einer MDI-Anwendung mit abgeleiteter CEditView aus..)

    Im Klassenassistenten die Windowsnachricht "=WM_CTLCOLOR" hinzufühgen (NICHT "WM_CTLCOLOR").
    In der dazugehörigen Methode nun folgenden Code schreiben

    HBRUSH CMdiView::CtlColor(CDC* pDC, UINT nCtlColor) 
    {
        pDC->SetBkColor(RGB(58,110,165));
        pDC->SetTextColor(RGB(0,0,0));
    
        HBRUSH hbr = CreateSolidBrush(RGB(0,0,255));
    
        return hbr;
        //return NULL;
    }
    

    Nun habt ihr ein schönes Blau als Hintergrund und Schwarz für die Schrift.

    MfG,
    Christian

    Ps.: Wäre das nicht etwas für die FAQ?



  • Es geht auch anders
    so sB:

    BOOL CMyView::OnEraseBkgnd(CDC* pDC) //mit ClassWizard -> wählen WM_ERASEBKGND 
    {
        CMyDoc* pDoc = GetDocument();
            ASSERT_VALID(pDoc);
        CRect rcClient;
        GetClientRect(&rcClient);
        CRect rc = rcClient;
    
        // get image rectangle
        CRect rcImage;
    
        rc = rcImage;
    
        CPoint pt = pDC->GetViewportOrg();
        CSize sz = GetTotalSize();
    
        // create clipping region
        CRgn clipRgn;
        clipRgn.CreateRectRgnIndirect(&rcClient);
        pDC->SelectClipRgn(&clipRgn);
        pDC->ExcludeClipRect(&rcImage);
    
        CBrush brush(RGB(100,100,100)); //grau
        pDC->FillRect(&rcClient, &brush);
    
        pDC->SelectClipRgn(NULL);
    
        return TRUE;
        Invalidate();
    }
    

    Das wäre auch was für FAQ


Anmelden zum Antworten