Page 1 of 1

Culoare buton

Posted: 11 Jul 2007, 18:40
by vasilecelmare
Intr-o aplicatie MFC cu un dialog am mapat WM_CTLCOLOR si am pentru a schimba culoarea textului si background-ului din diverse controale.
Am reusit pentru edit si static dar la bunton se pare ca nu functionaeaza.
Poate am gresit eu cu ceva?
Cam asa Asa am facut

HBRUSH CFirstDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

if(nCtlColor == CTLCOLOR_BTN)
{
pDC->SetTextColor(RGB(0,0,255));
hbr = (HBRUSH)::GetStockObject(WHITE_BRUSH);
}
... .... etc ... ...
return hbr;
}

Re: Culoare buton

Posted: 11 Jul 2007, 19:30
by Ovidiu Cucu
Nu poti schimba culoarea textului si a background-ului unui buton din WM_CTLCOLOR.
Poti totusi s-o faci daca ai un buton owner draw (cu stilul BS_OWNERDRAW).
In cazul acesta, intra in sarcina ta sa "desenezi" totul in acel buton.
O metoda ar fi sa hanluiesti WM_DRAWITEM in dialogul parinte, dar un pic si mai bine este e sa derivezi din CButton si sa suprascrii functia virtuala CButton::DrawItem.
Vezi documentatia din MSDN unde gasesti si un exemplu.

Re: Culoare buton

Posted: 11 Jul 2007, 20:56
by Marius Bancila
Din pacate documentatia e putin neclara aici. Nu se poate face acest lucru. Pentru un buton caruia ii poti schimba culoarea iti recomand acest articol.

Re: Culoare buton

Posted: 11 Jul 2007, 21:54
by vasilecelmare
Mersi fain!