Я не знаю ошибки в этой области.
Позвольте мне сначала объяснить, как этот процесс работает:
Delphi сначала использует стиль fsStayOnTop
во время создания окна, содержащего форму, вызывая win32-функцию SetWindowPos
с параметром HWND_TOPMOST
.
См. http://msdn.microsoft.com/en-us/library/ms633545(VS.85).aspx для подробного объяснения SetWindowPos
.
Каждый раз, когда приложение деактивировано или свернуто, Delphi перечисляет все самые верхние формы для нормализации форм (нормализация - это термин, который используется в vcl для обозначения того, что самые верхние окна превращаются в не самые верхние), и он хранит внутренний список из всех окон, которые были самыми верхними в тот момент.
Каждый раз, когда приложение активируется или восстанавливается, Delphi использует информацию, хранящуюся в списке самых верхних окон, для восстановления всех самых верхних форм (используя setWindowPos
с параметром HWND_TOPMOST
)
Так что мне кажется, что проблема в том, как Delphi хранит информацию при перечислении окон, когда приложение свернуто.
Я бы взломал функцию минимизации или деактивации и проверил, правильно ли указан список самых верхних окон (он на Application.FTopMostList
).