Wie man die group-box-text-hintergrund transparent
Ich möchte einen transparenten dialog. Ich capture die OnCtlColor Nachricht in einer von CDialog abgeleitete Klasse...das ist der code:
HBRUSH CMyDialog::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if(bSetBkTransparent_)
{
pDC->SetBkMode(TRANSPARENT);
hbr = (HBRUSH)GetStockObject(NULL_BRUSH);
}
return hbr;
}
Es funktioniert gut für alle Steuerelemente, aber die group-box (CStatic). Alle Etiketten (CStatic) sind lackiert mit einem transparenten text, der hintergrund, sondern der text von der Gruppe box ist es nicht transparent.
Ich schon gegoogelt, aber ich didn ' T finden eine Lösung. Weiß jemand, wie man einen echten transparenten Konzern-box?
Übrigens, ich arbeite unter Windows XP. Und ich will auch nicht zu voll ziehen, die Steuern zu vermeiden, ändern Sie den code, wenn die Anwendung nach der Migration auf ein anderes OS.
Dank,
Javier
Anmerkung: ich habe endlich geändert werden, der dialog, so dass ich nicht brauchen, um ihn transparent zu machen. Wie auch immer, ich diese Informationen hinzufügen, da vielleicht noch jemand versuchen, es zu tun. Die groupbox ist nicht ein CStatic aber ein CButton (ich weiß, das ist nicht neu). Ich habe die Windows-XP-theme auf Windows klassisch und dann die groupbox-backgraund war transparent. Das schlechte neue ist, dass in diesem Fall der Rahmen wird sichtbar, unter dem text...wenn also jemand nach diesem Ansatz, den ich denke, vielleicht wäre er/Sie besser Folgen Sie den Adzm Beratung.
- Ich habe gerade versucht dies in einer sehr schnellen test und die Gruppe im Feld text transparent ist (soweit, dass selbst die Gruppe-Feld ist sichtbar unter dem text). Möglicherweise Ihr problem ist nicht in den obigen code: möchten Sie vielleicht zu versuchen zu tun, eine schnelle minimal-demo-test-Programm.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie zwei Möglichkeiten.
Können Sie nicht verwenden Sie Standardsteuerelemente v6 (den XP-Stil-Steuerelemente), die machen Ihre app zu verlieren, die fanciness von neueren windows-Versionen. Allerdings IIRC der groupbox wird hinsichtlich der CTLCOLOR Problem. Wenn Sie nicht verwenden, die ohnehin, und es ist immer noch nicht respektiert werden, Ihre Farbe, dann Sie haben nur eine option...
Welche zu zeichnen er selbst. Ich weiß, Sie sagten, Sie wollen nicht, aber manchmal muss man. Zum Glück wird ein Gruppenrahmen ist ein sehr einfaches Steuerelement zu zeichnen. Diese Seite ist ein Beispiel für das zeichnen einer klassischen Stil-Gruppe Feld: http://www.codeguru.com/cpp/controls/controls/groupbox/article.php/c2273/ Sie können auch ziehen, es ist sehr einfach mit den UxTheme-libraries, die kommen mit XP+.
Wenn die Anwendung migriert werden, um ein anderes OS verwenden, haben Sie viel Umgang mit Migration über eine MFC-Anwendung im Allgemeinen. Wenn das dein Ziel ist, dann sollten Sie wirklich einen Blick in die Entwicklung mit ein cross-Plattform-UI-toolkit.
Einfach die WS_EX_TRANSPARENT erweiterter Fenster-Stil für die Gruppe im Feld.