我现在正在编写自己的CStatic子类,并且对如何更改其背景颜色有些困惑。
根据以前的经验,我习惯于用所需的颜色对“CTLCOLORSTATIC”消息使用react。
但是,这是我目前的子类:
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绘制背景色。