現在我正在編寫我自己的CStatic子類,並且我有點卡住如何更改其背景顏色。更改子類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);
};
我試圖監聽所述消息,但我沒有收到它。然而,我收到油漆信息,所以我不能責怪我的自定義控件根本不工作。
嘗試處理繪製例程中的背景顏色是否合法?我不喜歡這樣解決,但我沒有收到我曾經使用過的其他信息。
如果需要額外的代碼,隨意問,我會很樂意爲您提供額外的資源。
在此先感謝。
您可以使用[消息反射](https://stackoverflow.com/a/15415679/7571258)將父窗口中的WM_CTLCOLORSTATIC反射回靜態。 – zett42