更改子分类Cstatic控制的背景颜色

Change the background color of a subclassed CStatic control

本文关键字:背景 颜色 控制 Cstatic 分类      更新时间:2023-10-16

我现在正在写自己的cstatic子类,我对如何更改其背景颜色有些困扰。

从以前的经验来看,我习惯于用我想要的颜色对" ctlcolorstatic"消息做出反应。

但是,这是我目前的子类:

class LocationPane : public CWindowImpl<LocationPane, CStatic>
{
    DECLARE_WND_CLASS(L"LocationPane");
public:
    BEGIN_MSG_MAP_EX(LocationPane)
        MSG_WM_PAINT(OnPaint)
        MSG_WM_CTLCOLORSTATIC(OnCtlColorStatic);
    END_MSG_MAP()
    LocationPane();
    ~LocationPane();
private:
    HBRUSH OnCtlColorStatic(CDCHandle cd, CWindow wnd);
    //Paint routine
    void OnPaint(CDCHandle dc);
};

我试图听这篇消息,但我根本没有收到它。但是,我确实会收到油漆消息,所以我不能怪我的自定义控制,因为我根本不工作。

尝试处理油漆例程中的背景颜色是合法的解决方案吗?我真的不喜欢这样解决它,但是我没有收到我用过的其他信息。

如果需要其他代码,请随时提出,我将很乐意为您提供其他资源。

预先感谢。

我想您想在托管您的控件的父窗口中捕获WM_CTLCOLORSTATIC。当您想拥有文本控件具有不同的背景颜色时,通常用于使用。

但是,如果您要覆盖WM_PAINT,则不妨让您的OnPaint绘制背景颜色。