Hi All!!!
On a Dialog window i've made it a colored or Bitmap or Image. And Kept Radio Button and Check Box so We need to change the color of the Check Box and Radio Button according to Dialog Displayed.
I've tried with OnCtlColor Event. but it is working for static control but remaining it's not working.
So plz do the needful.
Thanking You
tgm.arjun
|
Go4Expert Founder
|
![]() |
| 6Mar2009,14:08 | #2 |
|
Is OnCTLColor Event fired for your controls
|
|
Light Poster
|
|
| 9Mar2009,08:19 | #3 |
|
Go4Expert Founder
|
![]() |
| 9Mar2009,09:06 | #4 |
|
I just realized you had the thread in the introduction forum and I moved it to MFC/Win32 forum.
If the event is fired it should and just post the code you are working on and we can look into it. |
|
Light Poster
|
|
| 9Mar2009,10:32 | #5 |
|
Quote:
Originally Posted by shabbir Code:
BOOL CEx3Dlg::OnInitDialog()
{
br1.CreateSolidBrush(RGB(100,100,100));
}
HCURSOR CEx3Dlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}
HBRUSH CEx3Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
if(nCtlColor == CTLCOLOR_DLG)
{
return br1;
}
else if(pWnd->GetDlgCtrlID()==IDC_CHECK1)
{
//pDC->SetTextColor(RGB(150,150,0));
//pDC->SetBkColor(RGB(100,100,100));
return br1;
}
else if(pWnd->GetDlgCtrlID()==IDC_RADIO1)
{
//pDC->SetTextColor(RGB(150,150,0));
//pDC->SetBkColor(RGB(100,100,100));
return br1;
}
else if(pWnd->GetDlgCtrlID()==IDC_STATIC)
{
pDC->SetTextColor(RGB(100,0,0));
pDC->SetBkColor(RGB(100,100,100));
return br1;
}
// TODO: Return a different brush if the default is not desired
return hbr;
}
With warm regards tgm.arjun |
|
Go4Expert Founder
|
![]() |
| 9Mar2009,10:56 | #6 |
|
You code is working perfectly fine for me
I did this Defined a public Brush CBrush *brush; in CTestDlg which is my Dialog Class Then Initialized this in constructor brush = new CBrush(RGB(49,49,49)); And then this goes into Code:
HBRUSH CTestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
if(pWnd->GetDlgCtrlID()==IDC_CHECK1)
{
pDC->SetTextColor(RGB(0, 255, 0));
pDC->SetBkColor(RGB(0, 0, 0));
return (HBRUSH)(brush->GetSafeHandle());
}
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
return hbr;
}
|
|
Light Poster
|
|
| 10Mar2009,12:45 | #7 |
|
Hi,
Thanking you for your concern... I'm not getting the color text for radio button and check box. Can u check out. Code:
BOOL CEx4Dlg::OnEraseBkgnd(CDC* pDC)
{
// TODO: Add your message handler code here and/or call default
CBitmap bmp;
CBitmap* ptrBmpOld;
CDC dcMem;
BITMAP bm;
CRect rect;
int i,j;
int nVer, nHor;
bmp.LoadBitmap(IDB_BITMAP2);
bmp.GetBitmap(&bm);
GetClientRect(rect);
nHor=rect.Width()/bm.bmWidth+1;
nVer=rect.Height()/bm.bmHeight+1;
dcMem.CreateCompatibleDC(pDC);
ptrBmpOld=dcMem.SelectObject(&bmp);
for(i=0;i<nHor;i++)
{
for(j=0;j<nVer;j++)
{
pDC->BitBlt(i*bm.bmWidth,j*bm.bmHeight,bm.bmWidth,bm.bmHeight,&dcMem,0,0,SRCCOPY);
}
}
dcMem.SelectObject(ptrBmpOld);
return TRUE;// CDialog::OnEraseBkgnd(pDC);
}
HBRUSH CEx4Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
//HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
HBRUSH brush;
switch(nCtlColor)
{
case CTLCOLOR_BTN:
case CTLCOLOR_STATIC:
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(0,0,255));
brush=(HBRUSH)::GetStockObject(NULL_BRUSH);
break;
}
case CTLCOLOR_EDIT:
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetBkColor(RGB(0,0,0));
pDC->SetTextColor(RGB(0,0,255));
brush=(HBRUSH)::GetStockObject(NULL_BRUSH);
return br1;
break;
}
case CTLCOLOR_LISTBOX:
{
pDC->SetBkMode(TRANSPARENT);
brush=(HBRUSH)::GetStockObject(NULL_BRUSH);
break;
}
case CTLCOLOR_SCROLLBAR:
{
pDC->SetBkMode(TRANSPARENT);
brush=(HBRUSH)::GetStockObject(NULL_BRUSH);
break;
}
default:brush=CDialog::OnCtlColor(pDC,pWnd,nCtlColor);
}
if(pWnd->GetDlgCtrlID()==IDC_CHECK1)
{
pDC->SetTextColor(RGB(0,0,0));
//pDC->SetBkColor(RGB(0,0,0));
pDC->SetBkMode(TRANSPARENT);
//brush=(HBRUSH)::GetStockObject(NULL_BRUSH);
return br1;
}
if(pWnd->GetDlgCtrlID()==IDC_RADIO1)
{
pDC->SetTextColor(RGB(255,0,0));
//pDC->SetBkColor(RGB(255,0,0));
pDC->SetBkMode(TRANSPARENT);
//brush=(HBRUSH)::GetStockObject(NULL_BRUSH);
return br1;
}
// TODO: Return a different brush if the default is not desired
return brush;
}
|
|
Go4Expert Founder
|
![]() |
| 10Mar2009,15:14 | #8 |
|
Looks like you have some DC messed up and try using the steps I mentioned and see if it works and slowly put in your code and see which one does not work when you put it.
|
|
Light Poster
|
|
| 12Mar2009,10:09 | #9 |
|
Quote:
Originally Posted by shabbir I've tried the above code in VS 6.0 color of the text radio button and check box is changing properly. But color of the text for radio button and check box is not working. |
|
Go4Expert Founder
|
![]() |
| 12Mar2009,10:16 | #10 |


