如何在MFC对话框中保持控件的Z顺序?

时间:2011-12-10 14:09:52

标签: c++ visual-c++ mfc

它开始让我疯狂,但我无法弄清楚如何在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的底部?

1 个答案:

答案 0 :(得分:2)

答案很简单。我刚刚在SetWindowPos文档中忽略了一个标志。 要防止z顺序更改,只需传递 SWP_NOZORDER 标志,因此函数调用应如下所示:

m_stMyStatic.SetWindowPos(NULL, xpos, ypos, 0, 0, SWP_NOSIZE | SWP_NOZORDER);