Schrifthintergrund in Groupbox ändern?
-
ich habe auf einen Tab Control eine Group Box plaziert - leider hat der Text eine andere Hintergrundfarbe als das Tab Control:
http://turing.fh-landshut.de/~jamann/groupbox.PNGwie kann ich die Hintergrund-Text-Farbe der Group Box ändern?
-
Hi,
Indem du WM_CTLCOLORBTN in der Nachrichten-Prozedur deines Parent-Fensters abfängst (Ich gehe mal davon aus, das es ein Dialog ist):
Zum Beispiel so:
case WM_CTLCOLORBTN: if(reinterpret_cast<HWND>(lParam) == GetDlgItem(hDlg, GROUPBOX_ID)) { SetBkMode(reinterpret_cast<HDC>(wParam), TRANSPARENT); // hbBkgndBrush ist der Brush, mit dem der Hintergrund gefüllt werden soll: return (reinterpret_cast<INT_PTR>(hbBkgndBrush)); } return (FALSE);
-
ich benutze keinen Dialog sondern nur reine WinAPI
m_hWnd = CreateWindowEx (0, L"BUTTON", m_Text.c_str(), WS_VISIBLE | WS_CHILD | BS_GROUPBOX, this->getX(), getY(), getWidth(), getHeight(), hWnd, (HMENU) NULL, (HINSTANCE) GetModuleHandle (NULL), NULL); HDC hdc = GetDC(m_hWnd); assert(hdc); if(hdc) { int result = SetBkMode(hdc, OPAQUE/*TRANSPARENT*/); assert(result != 0); SetBkColor(hdc, RGB(255,0,0)); DeleteDC(hdc); } SendMessage(m_hWnd, WM_SETFONT,(WPARAM)GetStockObject(DEFAULT_GUI_FONT),0);Der Schrifthintergrund ist nicht rot - sondern immer noch grau...? Wahrscheinlich liegt das an der DEFAULT_GUI_FONT - die übermalt mir vielleicht meinen roten Hintergrund...?
-
Vertexwahn schrieb:
ich benutze keinen Dialog sondern nur reine WinAPI
m_hWnd = CreateWindowEx (0, L"BUTTON", m_Text.c_str(), WS_VISIBLE | WS_CHILD | BS_GROUPBOX, this->getX(), getY(), getWidth(), getHeight(), hWnd, (HMENU) NULL, (HINSTANCE) GetModuleHandle (NULL), NULL); HDC hdc = GetDC(m_hWnd); assert(hdc); if(hdc) { int result = SetBkMode(hdc, OPAQUE/*TRANSPARENT*/); assert(result != 0); SetBkColor(hdc, RGB(255,0,0)); DeleteDC(hdc); } SendMessage(m_hWnd, WM_SETFONT,(WPARAM)GetStockObject(DEFAULT_GUI_FONT),0);Der Schrifthintergrund ist nicht rot - sondern immer noch grau...? Wahrscheinlich liegt das an der DEFAULT_GUI_FONT - die übermalt mir vielleicht meinen roten Hintergrund...?
Nein so geht das auch nicht! ...Dein Fenster wird von Windows (da es sich um ein Std-Control handelt) immer dann darüber informiert
(mit WM_CTLCOLORBTN), wenn es gezeichnet werden muss. Da und NUR da kannst du also die Werte ändern. Dein Button den du da oben erstellsts hat doch ein Parent-Fenster 'hWnd', in deren WndProc du doch den Msg-Handler einbauen kannst.
-
@Vertexwahn
LOL nee ne? Sag mal was lernt ihr da an der Uni? Nichts?!Ob man nun einen Dialog benutzt oder reine WinAPI ist doch total egal
Dialoge sind auch Fenster. Ouhm man ey...
-
@##########
sollen wir mal einen Vergleich ansellen wer mehr drauf hat
- jeder zeigt sein programmierten Projekte her und dann lassen wir die Leute abstimmen wers besser drauf hat
- praktisch so ein Programmierer Battle