Buttons Färben, aber WIE ???
-
CTLCOLOR_BTN hab ich gefunden, wie aber dann die Farbe hinzufügen, mit SetBkColor gehts nicht:
case CTLCOLOR_BTN: pDC->SetBkColor(RGB(235,233,237));Hat noch jmd eine Idee?
Gruß
Slawo
-
Du must an dieser Stelle ein Brush-Handle zurückgeben mit dem dann der Hintergrund gezeichnet wird.
-
Hi,
ich hab jetzt sowas:HBRUSH CView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { switch(nCtlColor) { case CTLCOLOR_BTN: // Für alle Buttons return (HBRUSH)m_brush; case CTLCOLOR_STATIC: // Für alle Statics pDC->SetBkColor(RGB(235,233,237)); case CTLCOLOR_DLG: // Für den Dialog return (HBRUSH)m_brush; default: return CRecordView::OnCtlColor(pDC, pWnd, nCtlColor); } }mit:
CBrush m_brush; m_brush.CreateSolidBrush(RGB(235,233,237));tut sich aber NIX.

Benutze VC++ und MFC.
HILFE !!!!
-
Dann wirst du vermutlicherweise ein Ownerdraw Button erstellen.
Vorgefertigte kannst du unter www.codeproject.com finden.
-
-
-
MP schrieb:
http://www.coding-help.de/steuer_allg.html#Farbige_Steuerelemente
Wie man den Button färbt steht dort leider auch nicht, ich habs auch mal mit einem ownerdraw button versucht und in der DrawItem folgenden code aus der MSDN eingefügt:
void CMyButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) { UINT uStyle = DFCS_BUTTONPUSH; // This code only works with buttons. ASSERT(lpDrawItemStruct->CtlType == ODT_BUTTON); // If drawing selected, add the pushed style to DrawFrameControl. if (lpDrawItemStruct->itemState & ODS_SELECTED) uStyle |= DFCS_PUSHED; // Draw the button frame. ::SetBkColor(lpDrawItemStruct->hDC, RGB(0,0,255)); ::DrawFrameControl(lpDrawItemStruct->hDC, &lpDrawItemStruct->rcItem, DFC_BUTTON, uStyle); CDC* pDC = CDC::FromHandle( lpDrawItemStruct->hDC ); CBrush brush; brush.CreateSolidBrush( RGB(0,0,255)); CRect rc = lpDrawItemStruct->rcItem; rc.top+=2; rc.bottom-=2; rc.left+= 2; rc.right-=2; pDC->FillRect(&rc,&brush); // Get the button's text. CString strText; GetWindowText(strText); // Draw the button text using the text color red. COLORREF crOldColor = ::SetTextColor(lpDrawItemStruct->hDC, RGB(255,0,0)); ::DrawText(lpDrawItemStruct->hDC, strText, strText.GetLength(), &lpDrawItemStruct->rcItem, DT_SINGLELINE|DT_VCENTER|DT_CENTER); ::SetTextColor(lpDrawItemStruct->hDC, crOldColor); }Das funktioniert zwar ganz gut, nur bleibt beim drücken des buttons der Text an seiner Position stehen, ebenso wie der hier blaue Hintergrund. Die Frage wäre jetzt, wie man herausbekommt wie weit beim drücken des Buttons der Inhalt nach unten rechts verschoben wird?
-
Vielleicht kann das hier ja ein wenig weiterhelfen.
http://www.cpp-tutor.de/mfc/mfc/kap8/tut/tut3.htm
-
Leider auch nicht so richtig, ich habe jetzt mal den Hintergrund von einem MemDC auf den Button geblittet und SRCINVERT verwendet, damit bekommt man zwar ganz gute Ergebnisse (zumindest ist der Rahmen immer zu sehen) aber vorherzusagen welche Farbe dabei rauskommt erscheint mir ziemlich schwierig.
-
Die Frage wäre jetzt, wie man herausbekommt wie weit beim Drücken des Buttons der Inhalt nach unten rechts verschoben wird?
-
werd ich auch ma ausprobieren !!!
