Probleme mit dem XP Style



  • Helft mir mal bitte. Entweder denke ich zu kompliziert, oder ich seh gerade die Hand vor Augen nicht.

    Ich hab meinem Proggi, das vorher einwandfrei funktionierte, nen XP Style gegönnt.

    Hab das so gemacht :

    http://www.codeproject.com/w2k/xptheme.asp

    Nun hab ich das Problem, das ich Schreibgeschützte Eingabefelder in schwarz angezeigt bekomme. Ich verwende farbliche Dialoge:

    void CRegistrierung::OnPaint() 
    {
    	CPaintDC dc(this); // device context for painting
    
    	// TODO: Code für die Behandlungsroutine für Nachrichten hier einfügen
    	CRect rect;						
        GetClientRect(&rect);
        dc.FillSolidRect(&rect,COLORREF(RGB(0,128,255)));	
    	// Kein Aufruf von CDialog::OnPaint() für Zeichnungsnachrichten
    }
    
    HBRUSH CRegistrierung::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
    	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
    
    	// TODO: Attribute des Gerätekontexts hier ändern
    
    	if (nCtlColor == CTLCOLOR_STATIC)
    	{
    		pDC->SetBkColor(RGB(0,128,255));        
            return (HBRUSH)GetStockObject(NULL_BRUSH);
    	}
    
    	// TODO: Anderen Pinsel zurückgeben, falls Standard nicht verwendet werden soll
    	return hbr;
    }
    

  • Mod

    Das müsste kein Problem sein und sich über WM_CTLCOLOR regeln lassen. Nur wird bei einem schreibgeschützen Edit Control WM_CTLCOLORSTATIC versendet! nicht WM_CTLCOLOREDIT!



  • ähhhm hab ich doch. siehe source code ^^


  • Mod

    Ruf mal den Default nur auf, wenn Du eben nicht readonly bist. Zumdem ist das returnieren eines NULL brushes auch nicht das was ein Control erwartet. Mit diesem Brush wird der Hintergrund gezeichnet. Du solltest also schon den entsprechenden Brush mit der Farbe anlegen und returnieren.



  • hmmm ich hab bei den eingabefenstern mal nen häkchen auf mehrzeilig gesetzt, und siehe da, es klappt. versteh denn sin dahinter zwar nicht. aber shit happens


Anmelden zum Antworten