如何改变对话框及其控件的颜色!(3个小疑点,前两个各20分,最后10分)

怎么改变对话框及其控件的颜色!!!!!!!(3个小问题,前两个各20分,最后10分)
(1)
OnCtlColor(CDC*       pDC,       CWnd*       pWnd,       UINT       nCtlColor)和    
    CtlColor(CDC*       pDC,       UINT       nCtlColor)       有什么区别?情举例说下

CtlColor函数怎么生成?我在消息相应列表里怎么找不到它??


(2),我现在是这样:

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

//   TODO:     在此更改   DC   的任何属性
if(nCtlColor   ==   CTLCOLOR_STATIC)
{
pDC-> SetBkColor(RGB(232,240,232));
return   m_brush;
}
else   if(nCtlColor   ==   CTLCOLOR_DLG)
{
pDC-> SetBkColor(RGB(232,240,232));
return   m_brush;
}
// return   (HBRUSH)m_brush.GetSafeHandle();
//   TODO:     如果默认的不是所需画笔,则返回另一个画笔
return   hbr;
}
我不知道到底是  
pDC-> SetBkColor(RGB(232,240,232));起作用还是
return   m_brush;                                       起作用,有啥区别??


(3),我看有的例子上有这么一句:
pDC-> SetBkMode(TRANSPARENT);      
这一句什么意思?什么作用???

------解决方案--------------------
(3),我看有的例子上有这么一句:
pDC-> SetBkMode(TRANSPARENT);
这一句什么意思?什么作用???

这个你可以试试就知道了
比如如果不设置,那么你先后写两段文字(互相有重叠),那么后写的文字会把前面的文字遮盖掉一部分,设置之后就不会遮盖了
------解决方案--------------------
(2)都起作用.
pDC-> SetBkColor(RGB(232,240,232));
设置控件的背景颜色
return m_brush;
返回改变前的画刷.系统需要此画刷.
------解决方案--------------------
pDC-> SetBkMode(TRANSPARENT);
设置透明效果,设置这个时,你所用的控件属性里也要选择 transparent
------解决方案--------------------

参考下下面这段代码吧,之前我用过的:
................................................................

HBRUSH CVdserverDlg::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_LISTBOX)
{
//pDC-> SetBkMode(TRANSPARENT);
pDC-> SetTextColor(RGB(0,0,0));
pDC-> SetBkColor(RGB(233,233,220));
HBRUSH b=CreateSolidBrush(RGB(233,233,220));
return b;
}
else if(nCtlColor==CTLCOLOR_SCROLLBAR)
{
pDC-> SetTextColor(RGB(0,0,0));
HBRUSH b=CreateSolidBrush(RGB(200,210,225));
return b;
}
else if(nCtlColor==CTLCOLOR_EDIT)
{
pDC-> SetTextColor(RGB(0,0,0));
HBRUSH b=CreateSolidBrush(RGB(200,210,225));
return b;
}
else if(nCtlColor==CTLCOLOR_STATIC)
{
pDC-> SetBkMode(TRANSPARENT);
pDC-> SetTextColor(RGB(0,0,0));
HBRUSH b=CreateSolidBrush(RGB(200,210,225));
return b;
}
else if(nCtlColor==CTLCOLOR_DLG)
{
pDC-> SetTextColor(RGB(0,0,0));
HBRUSH b=CreateSolidBrush(RGB(200,210,225));
return b;
}


return hbr;
}