[英]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.