它开始让我疯狂,但我无法弄清楚如何在z顺序中保持子控件的位置。 在MFC对话框资源编辑器的设计时,我在底部有一个STATIC控件(CStatic的后代)(Tab键顺序为1),即。它与按钮,列表框等其他控件重叠。
在运行时,对话框处理WM_TIMER消息,在OnTimer处理程序中,移动了STATIC控件:
void CTestMFCDlg::OnTimer(UINT_PTR nIDEvent)
{
...
m_stMyStatic.SetWindowPos(&this->wndBottom, xpos, ypos, 0, 0, SWP_NOSIZE);
...
}
在调用SetWindowPos进行子级CStatic控件之后,无论我在第一个参数中传递了什么,它都会在对话框中绘制其他控件。
知道如何将控件始终保持在Z-order的底部?
答案 0 :(得分:2)
答案很简单。我刚刚在SetWindowPos文档中忽略了一个标志。 要防止z顺序更改,只需传递 SWP_NOZORDER 标志,因此函数调用应如下所示:
m_stMyStatic.SetWindowPos(NULL, xpos, ypos, 0, 0, SWP_NOSIZE | SWP_NOZORDER);