首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

ATL7改变被创建窗口的初始背景色,不使用 CWndClassInfo& wci = GetWndClassInfo();解决思路

2012-03-21 
ATL7改变被创建窗口的初始背景色,不使用 CWndClassInfo& wci GetWndClassInfo()下面的代码可以在创建窗

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的...
晕,为了效率...
请教高人。

[解决办法]
我需要的是在注册窗口类时就要指定窗口背景色,而不是响应任何消息
-------------------------------------
似乎有些矛盾。注册时指定为一种背景色,而不同实例又要求不同的背景色。那岂不是要按背景色来注册窗口了?

为什么不能相应消息呢?让窗口类拥有一个背景色变量,就可以让每个实例拥有不同的背景色,然后绘之。

热点排行