ATL7改变被创建窗口的初始背景色,不使用 CWndClassInfo& wci = GetWndClassInfo();
下面的代码可以在创建窗口时改变窗口的背景色:
CWndClassInfo& wci = GetWndClassInfo();
if (wci.m_atom == 0)
{
m_hBr = CreateSolidBrush(0x006600);
wci.m_wc.hbrBackground = m_hBr;
}
但,如果在一个程序中基于CWindow,创建多个窗口,则多个窗口将使用同样的背景色。原因是:static
有没有其他的方法来改变窗口背景色呢?
★ 要求可以做到:不同窗口,不同的初始背景色?
注:通过看ATL源码,我想直接调用基类:
ATOM atom = GetWndClassInfo().Register(&m_pfnSuperWindowProc);
return CWindowImplBaseT <CWindow, CControlWinTraits> ::Create(NULL, 0U, NULL,
WS_POPUP, WS_EX_TOOLWINDOW | WS_EX_TOPMOST, 0U, atom, 0);
但,失败,因为还是要乃至GetWndClassInfo()。
而wci是static的...
晕,为了效率...
请教高人。
[解决办法]
我需要的是在注册窗口类时就要指定窗口背景色,而不是响应任何消息
-------------------------------------
似乎有些矛盾。注册时指定为一种背景色,而不同实例又要求不同的背景色。那岂不是要按背景色来注册窗口了?
为什么不能相应消息呢?让窗口类拥有一个背景色变量,就可以让每个实例拥有不同的背景色,然后绘之。