【发布时间】:2014-07-28 19:53:33
【问题描述】:
我有一个基于 MFC 对话框的程序,其中包含多个元素。我正在使用带有 SP1 的 VS2010 Professional 在 Windows 7 上进行开发。我想更改一些滑块元素的背景颜色(来自CSliderCtrl 类)。我发现的唯一一件事是尝试覆盖 CSliderCtrl 的 OnCtlColor 函数。我通过以下方式做到了这一点:
class MySlider : public CSliderCtrl
{
public:
MySlider(UINT r, UINT g, UINT b){R=r;G=g;B=b;}
virtual ~MySlider(){}
UINT R;
UINT G;
UINT B;
HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
pDC->SetBkColor(RGB(R, G, B));
return CSliderCtrl::OnCtlColor(pDC, pWnd, nCtlColor);
}
};
然后,我将所有 CSliderCtrl 元素替换为 MySlider 元素,并将所需的背景 rgb 值传递给构造函数。然而,这并没有奏效。
谁能帮我弄清楚如何正确设置滑块元素的背景颜色? (或与此相关的任何其他元素)
【问题讨论】:
-
相关? stackoverflow.com/q/12006168/3747990,IIRC,
CSliderCtrl::OnCtlColor应该在SetBkColor之前调用。
标签: c++ visual-studio-2010 background mfc element