繁体   English   中英

更改子类CStatic控件的背景颜色

[英]Change the background color of a subclassed CStatic control

我现在正在编写自己的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绘制背景颜色。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM