关于OnCtlColor的有关问题

关于OnCtlColor的问题
我先在OnEraseBkgnd里将对话框的背景设为一幅位图
我想把一个 滑块控件CSliderctrl 的背景设为和对框框背景一样 要不然滑块背景全是黑的

HBRUSH Cread::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_STATIC) 



pDC-> SetBkMode(TRANSPARENT);
return (HBRUSH)::GetStockObject(NULL_BRUSH); 


  if(pWnd->GetDlgCtrlID()==IDC_SPEED)//IDC_SPEED为滑块控件ID
{
pDC->SetBkMode(TRANSPARENT);
return (HBRUSH)::GetStockObject(NULL_BRUSH); 

}
return hbr;
}
同样的代码在STATIC 能行但到滑块控件却不好使了,求高手帮助

------解决方案--------------------
OnCtlColor不是对所有的控件都是那么有效的,你可能要自绘了
------解决方案--------------------
要想好的界面就要自己绘制了
单单靠这个函数实现不了那么炫的效果
------解决方案--------------------
单这样恐怕不够,得自绘
------解决方案--------------------
自绘,

or
多搜集一些单控件的背景描绘示例。
------解决方案--------------------
nCtlColor==CTLCOLOR_STATIC 这句话指的是对Static控件有效,其他控件不行的

正如楼上各位所说,登自绘滑块控件,自己写个类吧,继承自滑块控件类,然后自绘
------解决方案--------------------
滑块的脾气很古怪,它的绘制不同其他控件,你不能使用NULL_BRUSH的空刷子,也不能在这个WM_CTLCOLOR消息函数中执行绘图工作,必须给系统返回一个有效的、真正可以涂刷背景的刷子才行。根据我的实验,好像也只有这个办法,就算你处理WM_ERASEBKGND消息以及后续的WM_NOTIFY的自绘消息也都难以实现你想要的背景。