簡體   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