gpt4 book ai didi

c++ - 从 CEdit 派生类更改文本和背景颜色

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

我有一个来自 CEdit 的派生类,我想更改文本和背景颜色。我已尝试使用消息 ON_WM_CTLCOLOR_REFLECTON_WM_CTLCOLOR,但我从未收到这些消息。 ON_PAINT 旁边还有其他选项吗?

下面是我如何初始化我的 CColorEdit 控件:

//in my dialog.h
CColorEdit m_test;
//in .cpp
DDX_Control(pDX, IDC_TEST, m_test);

我不能像这样手动设置颜色:

m_test.SetTextColor(...);

这是我尝试处理 ON_WM_CTLCOLOR 的方式:

BEGIN_MESSAGE_MAP(CColorEdit, CEdit)
ON_WM_CTLCOLOR()
END_MESSAGE_MAP()

HBRUSH CColorEdit::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CEdit::OnCtlColor(pDC, pWnd, nCtlColor);
if (m_theme != 0)
{
pDC->SetTextColor(RGB(0, 255, 0));
}
return hbr;
}

这是我对 WM_CTLCOLOR_REFLECT 的尝试:

BEGIN_MESSAGE_MAP(CColorEdit, CEdit)
//{{AFX_MSG_MAP(CColorEdit)
ON_WM_CTLCOLOR_REFLECT()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

void CColorEdit::SetTextColor(COLORREF textColor)
{
m_textColor = textColor;
Invalidate();
}
void CColorEdit::SetBkColor(COLORREF backgroundColor)
{
m_backgroundColor = backgroundColor;
m_brBkgnd.DeleteObject();
m_brBkgnd.CreateSolidBrush(backgroundColor);
Invalidate();
}

HBRUSH CColorEdit::CtlColor(CDC* pDC, UINT nCtlColor)
{
pDC->SetBkColor(m_backgroundColor);
pDC->SetTextColor(m_textColor);

if (nCtlColor) // To get rid of compiler warning
nCtlColor += 0;

return hbr;
}

谢谢。

最佳答案

here .引用:

It was a real challenge for me to make a simple change of background color for CEdit. I was suprised to find out that there are no standard function, like CEdit::SetBkColor, to do this.

第一步是创建从 CEdit 派生的类并声明函数 CtlColor:

// CustomEdit.h
class CCustomEdit : public CEdit
{
protected:
HBRUSH CtlColor(CDC *pDC, UINT);
DECLARE_MESSAGE_MAP()
};

其次,处理WM_CTLCOLOR_REFLECT事件:

// CustomEdit.cpp
BEGIN_MESSAGE_MAP(CCustomEdit, CEdit)
ON_WM_CTLCOLOR_REFLECT()
END_MESSAGE_MAP()

HBRUSH CCustomEdit::CtlColor(CDC *pDC, UINT)
{
COLORREF bkColor = RGB(255, 255, 255);
pDC->SetBkColor(bkColor);
return CreateSolidBrush(bkColor);
}

所以你需要使用两者!

关于c++ - 从 CEdit 派生类更改文本和背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56550752/

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