我有一个父窗口(MFC 对话框),上面有一些控件(编辑框、按钮等),如下所示:
在运行时 ( OnInitDialog
),我创建了另一个子窗口,它覆盖并隐藏了对话框中的所有其他控件,使用以下代码:
RECT r;
GetClientRect(&r);
m_layer.Create(NULL, NULL, WS_CHILD | WS_VISIBLE, r, this, 0);
该对象是继承自m_layer
的类的实例。在这个类中,我重写了以下方法:CLaywerWnd
CWnd
BOOL CLayerWnd::OnEraseBkgnd(CDC* pDC)
{
CBrush b(RGB(0, 100, 100));
RECT r;
GetClientRect(&r);
pDC->FillRect(&r, &b);
return TRUE;
}
现在我的窗口看起来像这样:
问题是,当我移动鼠标光标或单击这个新的子窗口时,消息会转发到父窗口(我使用 Spy++ 进行了检查),并且其他子控件会在新的子窗口上重绘,如下所示。
我不明白为什么会发生这种情况,我想知道如何避免这种行为。