簡體   English   中英

更改MFC對話框元素的背景顏色

[英]Changing the background color of an MFC dialog element

我有一個包含多個元素的基於MFC對話框的程序。 我正在Windows 7上使用VS2010 Professional和SP1進行開發。 我想更改某些滑塊元素的背景顏色(來自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值傳遞給構造函數。 但是,這最終沒有奏效。

有人可以幫我弄清楚如何正確設置滑塊元素的背景色嗎? (或與此相關的任何其他元素)

覆蓋OnPaint並繪制一個實心矩形

void MySlider::OnPaint() 
{
    CPaintDC dc(this); // device context for painting

    RECT rect ;

    CRect rectButton;
    this->GetWindowRect(&rectButton);

    COLORREF cr = RGB(60,180,80)
    dc.FillSolidRect(&rect, cr); // Background color


        // Any other drawing
}

創建具有背景色的畫筆,並返回該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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM