Найти формы, которые частично перекрывают окно вашего приложенияDelphi , Программа и Интерфейс , Размеры и ПоложениеНайти формы, которые частично перекрывают окно вашего приложения
Оформил: DeeCo { You would have to iterate over all windows above yours in Z-order and check for each window you find if it has the WS_EX_TOPMOST exstyle set and is visible. If it has, you have to get its window rectangle (GetWindowRect) and test if that overlaps your window. Example: } procedure TForm1.Button1Click(Sender: TObject); var wnd: HWND; function IsTopMost(wnd: HWND): Boolean; begin Result := (GetWindowLong(wnd, GWL_EXSTYLE) and WS_EX_TOPMOST) <> 0; end; procedure logWindowInfo(wnd: HWND); const visString: array[Boolean] of string = ('not ', ''); var buffer: array[0..256] of Char; r: TRect; begin if wnd = 0 then Exit; GetClassName(wnd, buffer, SizeOf(buffer)); with Memo1.Lines do begin Add(Format(' Window of class %s ', [buffer])); GetWindowRect(wnd, r); Add(Format(' at (%d,%d):(%d,%d)', [r.Left, r.Top, r.Right, r.Bottom])); Add(Format(' Window is %svisible', [visString[IsWindowVisible(wnd)]])); Add(Format(' Window is %stopmost', [visString[IsTopmost(wnd)]])); end; end; begin Memo1.Clear; wnd := Handle; repeat wnd := GetNextWindow(wnd, GW_HWNDPREV); LogWindowInfo(wnd); until wnd = 0; Memo1.Lines.Add('End log.'); end; Перевод контента на русский язык: Код, предоставленный ниже, это программный проект Delphi, который ищет окна над основной формой в порядке Z-набора и проверяет, частично ли они перекрываются с ней. Работает следующим образом:
Программа может быть улучшена следующими способами:
Вот альтернативное решение с использованием
В этом коде определена функция Найдите формы, которые частично перекрывают окно вашего приложения, проверив все окна выше вашего в порядке Z и определив, имеет ли каждый из них стиль WS_EX_TOPMOST и является ли он видимым. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Размеры и Положение ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |