CStatusBar - Pane FillSolidRect?



  • Moin,

    folgendes: wie erreiche ich es, dass ein Pane für eine bestimmte Dauer eine andere Hintergrundfarbe behält?

    Es geht darum dass ich bei verschiedenen Aktionen, während der Ausführungsdauer, die Hintergrundfarbe des ersten Panes der Statusbar eine andere Farbe hat. Während dieser Zeit wird auch Text, der sich ändern kann, in diesem Pane ausgegeben.

    Die Farbe zu setzen ist nicht das Problem. Nur sie zu behalten 😕

    Die Farbe ist weg, wenn neuer Text gesetzt wird.

    Meine Lösung bis hierher:

    In CMainFrame eine Membervariable, Typ bool. Sie steuert die Dauer der anderen Farbe. Wird auf true gesetzt, wenn Aktion Start, und false wenn Ende.
    Dazwischen soll die neue Farbe bleiben.

    In der FormView wird eine eigene MainFrameFunc aufgerufen und die Variable gesetzt.

    Die Farbe wird in MainFrame::OnPaint gesetzt.

    void CMainFrame::OnPaint() 
    {
    	CPaintDC dc(this); // device context for painting
    
    	CDC* pDC;
    	pDC = m_wndStatusBar.GetDC();
    	oldClr = pDC->GetBkColor();
    
    	CRect rect;
    	m_wndStatusBar.GetItemRect( 0, &rect );
    	pDC->SetBkMode( TRANSPARENT );
    
    	if( !m_gray )
    		pDC->FillSolidRect( rect, RGB(255,255,0));
    }
    

    Was fehlt?

    Thx schonmal & grüssle 🙂


Anmelden zum Antworten