Я пишу свой собственный подкласс 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);
};
Я пытался прослушать указанное сообщение, но я его вообще не получаю. Однако я получаю сообщение о краске, поэтому я не могу винить свой пользовательский элемент управления в том, что он вообще не работает.
Является ли законным решением попытаться обработать цвет фона в процедуре рисования? Мне не очень нравится решать это таким образом, но я не получаю другого сообщения, с которым я привык работать.
Если нужен дополнительный код, не стесняйтесь спрашивать, я с удовольствием предоставлю вам дополнительные ресурсы.
Заранее спасибо.