Label Hintergrund transparent setzten



  • Hallo.

    Ich schreibe eine Anwendung für WinCE 6.0. Da man dort scheinbar keine Themes einstellen kann, versuche ich gerade meine GUI selber zu skinnen.

    Nun habe ich die Hintergrundfarbe für das Fenster festgesetzt, zeichne in OnDraw ein Gradient und habe die Labels auf BkMode Transparent gesetzt. Doch anstatt des Gradienten scheint eine schwarze Fläche durch die 'transparenten' Bereiche des Lables:

    http://img18.imageshack.us/img18/6523/wincetransp.jpg

    void CMyAppView::OnDraw(CDC* pDC)
    {
    		CRect		rect;
    		const WORD	START_GREY = 1000;
    		const WORD	END_GREY   = 20000;
    
    		GetWindowRect(&rect);
    
    		TRIVERTEX pVertex[2];	
    		pVertex[0].Alpha = 0;
    		pVertex[0].Blue = END_GREY;
    		pVertex[0].Green = END_GREY;
    		pVertex[0].Red = END_GREY;
    		pVertex[0].x = 0;
    		pVertex[0].y = 0;
    		pVertex[1].Alpha = 0;
    		pVertex[1].Blue = START_GREY;
    		pVertex[1].Green = START_GREY;
    		pVertex[1].Red = START_GREY;
    		pVertex[1].x = rect.right;
    		pVertex[1].y = rect.bottom / 5;
    
    		GRADIENT_RECT gRect;
    		gRect.UpperLeft = 0;
    		gRect.LowerRight = 1;
    
    		GradientFill(*pDC, pVertex, 2, &gRect, 1, GRADIENT_FILL_RECT_V);	
    }
    
    HBRUSH CMyAppView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
    {
    	HBRUSH hbr = CFormView::OnCtlColor(pDC, pWnd, nCtlColor);
    
        // Brush für den Dialog Hintergrund anlegen
        hbr = CreateSolidBrush(RGB(10, 10, 10));
    
        // Hintergrund für Text transparent setzen
        if((pWnd->GetDlgCtrlID() == IDC_STATIC_ID) ||
           (pWnd->GetDlgCtrlID() == IDC_STATIC_MY_TEXT))
        {
          pDC->SetBkMode(TRANSPARENT);
    	  pDC->SetTextColor(RGB(200,200,200));
        }
    
        // Brush für Dialog Hintergrund zurück geben
        return hbr;
    }
    

    Wie mache ich es richtig?


  • Mod

    Hast Du evtl. den Stil WS_CLIPCHILDREN gesetzt?



  • Soweit ich das beurteilen kann, habe ich das nicht.

    Habe noch nicht soviel Erfahrung mit den MFC.

    In der .rc Datei finde ich folgendes

    IDD_MYAPP_FORM DIALOG  0, 0, 179, 294
    STYLE DS_SETFONT | WS_CHILD
    FONT 8, "MS Sans Serif"
    BEGIN
        CTEXT           "Test",IDC_STATIC_TEST,7,7,165,8
        CONTROL         "Functions",IDC_BUTTON_FUNCTIONS,"Button",BS_OWNERDRAW | WS_TABSTOP,15,262,150,25
        LISTBOX         IDC_LIST1,7,34,165,211,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
        CTEXT           "Statisch",IDC_STATIC_STATIC,7,19,165,10
        SCROLLBAR       IDC_SCROLLBAR1,7,245,165,11
    END
    

  • Mod

    Wenn ich mich nicht irre erzwingt Windows CE WS_CLIPCHILDREN für alle Dialoge.

    Du findest dazu einige Diskussionen im Netz:
    http://www.pocketpcjunkies.com/Uwe/Forum.aspx/wince-vc/6421/WS-CLIPCHILDREN



  • Martin Richter schrieb:

    Wenn ich mich nicht irre erzwingt Windows CE WS_CLIPCHILDREN für alle Dialoge.

    Du findest dazu einige Diskussionen im Netz:
    http://www.pocketpcjunkies.com/Uwe/Forum.aspx/wince-vc/6421/WS-CLIPCHILDREN

    Leider bin ich trotz des Hinweis und google zu keinem richtigen Ansatz gekommen. 😞 Bin wohl noch zu unerfahren mit den MFC.

    Kann mir jemand vielleicht noch weiterhelfen 😕



  • *push*


Anmelden zum Antworten