gpt4 book ai didi

c++ - 更改 MFC 对话框元素的背景颜色

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:53:01 26 4
gpt4 key购买 nike

我有一个包含多个元素的基于 MFC 对话框的程序。我正在使用带有 SP1 的 VS2010 专业版在 Windows 7 上进行开发。我想更改某些 slider 元素的背景颜色(来自 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 值传递给构造函数。然而,这并没有奏效。

谁能帮我弄清楚如何正确设置 slider 元素的背景颜色? (或与此相关的任何其他元素)

最佳答案

用背景颜色创建一个画笔并返回 HBRUSH 以获得颜色变化。

HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
CSliderCtrl::OnCtlColor(pDC, pWnd, nCtlColor);

pDC->SetBkColor(RGB(R, G, B));
static CBrush br(RGB(R, G, B));

return (HBRUSH)br;
}

关于c++ - 更改 MFC 对话框元素的背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25003239/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com