Как сохранить Z-порядок элемента управления в диалоге MFC? - PullRequest
4 голосов
/ 10 декабря 2011

это начинает сводить меня с ума, но я не могу понять, как сохранить положение дочернего элемента управления в z-порядке.Во время разработки в редакторе ресурсов диалога MFC у меня есть элемент управления STATIC (потомок CStatic) внизу (порядок табуляции № 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-порядка?

1 Ответ

2 голосов
/ 12 декабря 2011

Ответ прост.Я только что пропустил один флаг в документации SetWindowPos.Чтобы предотвратить изменение z-порядка, просто передайте флаг SWP_NOZORDER , поэтому вызов функции должен выглядеть так:

m_stMyStatic.SetWindowPos(NULL, xpos, ypos, 0, 0, SWP_NOSIZE | SWP_NOZORDER); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...