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?
-
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
-
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-CLIPCHILDRENLeider 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*