none
окно со стилем WS_EX_TOPMOST перекрывается окном без такого стиля. RRS feed

  • Вопрос

  • Суть проблемы есть приложение окно которого должно быть всегда по верх других окон для этого оно создается со стилем WS_EX_TOPMOST. И второе приложение с основным окном развернутым на весь экран но без этого стиля. Первое время всё работает хорошо. Но при работе второго приложения периодически создаются дочернии окна, которым это приложение динамически меняет стиль на WS_EX_TOPMOST, потом также динамически убирает данный стиль. При этом главное в стилях главного окна второго приложения ни когда не появляется WS_EX_TOPMOST. Некоторое время всё работает корректно, но в один прекрасный момент главное окно второго приложения развёрнутое на весь экран перекрывает окно первого приложения. При этом окно второго приложения не имеет стиль WS_EX_TOPMOST, а стиль окна первого приложения содержит флаг WS_EX_TOPMOST и вообще их стили не поменялись, но выходит приоритет рисования поменялся. Как такое может быть ?
    25 октября 2013 г. 9:55

Ответы

Все ответы

  • В состав VS входит утилита Spy++ (если нет ярлыка, то ее можно найти в папке %ProgramFiles%\Microsoft Visual Studio xx.0\Common7\Tools). Она, кроме всего прочего, умеет отображать текущие стили любого окна. Воспользуйтесь ей, чтобы проконтролировать возможное изменение стилей Ваших окон.

    • Предложено в качестве ответа kosuke904 25 октября 2013 г. 11:43
    25 октября 2013 г. 11:36
  • Именно этой утилиткой и пользуюсь. И вижу что окно без стиля WS_EX_TOPMOST перекрывает окно без такого стиля.  Я не понимаю как такое может быть. В MSDN говорится WS_EX_TOPMOST - "Specifies that a window created with this style should be placed above all non-topmost windows and should stay above them, even when the window is deactivated." 
    28 октября 2013 г. 4:57
  • А как Вы меняете стили окон? Посмотрите описание вот этой функции.
    28 октября 2013 г. 13:47