Culoare buton

Intrebari legate de programarea cu biblioteci precum MFC, ATL, WTL si GDI+.
Post Reply
User avatar
vasilecelmare
Junior
Junior
Posts: 32
Joined: 11 Jul 2007, 18:24

Culoare buton

Post by vasilecelmare » 11 Jul 2007, 18:40

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;
}



User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3776
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: Culoare buton

Post by Ovidiu Cucu » 11 Jul 2007, 19:30

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.

User avatar
Marius Bancila
Fondator
Fondator
Posts: 2344
Joined: 11 Jul 2007, 11:45
Judet: Timiş
Location: Timisoara
Contact:

Re: Culoare buton

Post by Marius Bancila » 11 Jul 2007, 20:56

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.
Marius Bancila
Fondator Codexpert, Microsoft MVP VC++
Site personal | Blog

User avatar
vasilecelmare
Junior
Junior
Posts: 32
Joined: 11 Jul 2007, 18:24

Re: Culoare buton

Post by vasilecelmare » 11 Jul 2007, 21:54

Mersi fain!

Post Reply