- Windows window z order
- Window Z-order Problem
- Replies (4)
- Win32 API. Окна — Z-последовательность (Z Order)
- ОГЛАВЛЕНИЕ
- Z-последовательность (Z Order)
- How to get the z-order in windows?
- 5 Answers 5
- Not the answer you’re looking for? Browse other questions tagged c# .net windows z-order or ask your own question.
- Linked
- Related
- Hot Network Questions
- Subscribe to RSS
- Win32 API. Окна Страница 4. Z-последовательность (Z Order)
- Z-последовательность (Z Order)
Windows window z order
Z-последовательность (Z order) окна обозначает позицию окна в стеке перекрывающихся окон. Этот оконный стек ориентируется по воображаемой оси, z-оси (оси аппликат), уходящей за пределы экрана. Окно наверху Z-последовательности перекрывает все другие окна. Окно внизу Z-последовательности перекрыто всеми другими окнами.
Windows Z-последовательность сохраняет в обычном списке. Добавляя окна в Z-последовательность, она основывается на том, что в любом случае они самые верхние окна, окна верхнего уровня или дочерние окна. Самое верхнее окно (topmost window) накладывается на все другие не самые верхние окна, независимо от того, является ли они активными или приоритетными окнами. Самое верхнее окно имеет стиль WS_EX_TOPMOST. Все самые верхние окна появляются в Z-последовательности перед любыми не самыми верхними окнами. Дочернее окно сгруппировано со своим родителем в Z-последовательности.
Когда прикладная программа создает окно, Windows помещает его наверху Z-последовательности для окон того же самого типа. Вы можете использовать функцию BringWindowToTop, чтобы перенести окно в верхнюю часть Z-последовательности для окон того же самого типа. Вы можете перестраивать Z-последовательность, используя функции SetWindowPos и DeferWindowPos.
Пользователь изменяет порядок Z-последовательности, активизируя различные окна. Windows устанавливает активное окно наверху Z-последовательности для окон того же самого типа. Когда окно переходит в верхнюю часть Z-последовательности, его дочерние окна делают это также. Вы можете использовать функцию GetTopWindow, чтобы отыскать все дочерние окна родительского окна и возвратить дескриптор дочернего окна, которое является самым высоким в Z-последовательности. Функция GetNextWindow извлекает данные о дескрипторе следующего или предыдущего окна в Z-последовательности.
Window Z-order Problem
I’m having a problem with the order of my windows. Every once in a while alt-tabbing leaves the current window on top and in focus, with the alt-tab selected app is one level below it. I’ve also had an app that displays a modal dialog box, but it occasionally is displayed behind the main window but retains focus and there is no way to get it to the front without using «close window». Oddly enough closing the window brings the modal dialog to the front instead of actually closing it.
It seems that once the machine gets into this state the only way to fix it is to log out and back in.
Is there a fix for this?
Replies (4)
To better assist you, may we know what changes have you done prior to getting this issue? Is it only happening to a specific app?
We’ll be waiting for your response.
Was this reply helpful?
Sorry this didn’t help.
Great! Thanks for your feedback.
How satisfied are you with this reply?
Thanks for your feedback, it helps us improve the site.
How satisfied are you with this reply?
Thanks for your feedback.
It seems to be fairly complex and intermittent, so getting data on the behavior is a pain. However here are the symptoms I am seeing:
1) It seems that when my pc gets into this state whatever window is the highest on the stack gets stuck there. If I alt-tab the windows will reorder but the stuck window doesn’t respond to alt-tab.
2) When a window gets stuck I am able to minimize it to remove it from the alt-tab stack. Restoring the window unfortunately puts the window back on top and stuck.
3) When the app is stuck and not in full screen I can interact with the exposed parts of lower windows. Even though they have focus at this point they remain one level lower in the z order and the stuck window stays on top.
4) Oddly enough, when Chrome is running but the 3rd window or lower, alt-tabbing to Chrome leaves Chrome at its current z order. Clicking is the only way to focus it. If the 2nd window is maximized there is no way to interact with Chrome without minimizing the windows above it.
5) I have seen this behavior with different windows, so it’s not specific to any particular app.
6) Clicking on task bar icons does not bring that app to the foreground.
As far as what has changed. nothing that should have caused this. I have a 2017 Razer Blade, and aside from getting the Oculus rift and installing some games and typical apps (Eclipse, Visual Studio, Google Drive, things like that), nothing of importance has changed. I am a software engineer, so feel free to ask technical questions. And no, I have not used my powers for evil on my laptop :).
Here is one odd data point I noticed last night that may be interesting. I just downloaded a trial of Army Builder from Lone Wolf Development (this problem started long before then). This app also got stuck, but is setup in such a way that I could see some additional odd behavior. Here are the interesting bits
1) The app starts and immediately shows a modal dialog box. The actual window is locked, and the dialog box appears below it, inaccessible.
2) Left clicking on the task bar icon and choosing close windows brings the dialog box to the foreground, which I can then dismiss and interact with the app. However it throws up multiple dialog boxes, and each needs a close window issued to get it back to the main window.
3) When I closed the app (or killed it in task manager) and reopened it it was in the same stuck state.
I’ve been noticing z ordering problems using alt-tab and task bar icon clicks. The only way I can fix it seems to be logging out and back in. Also, as I mentioned, this is an intermittent problem and doesn’t occur at login. It starts some time later (sometimes not at all) and persists until a logout/in or reboot.
Win32 API. Окна — Z-последовательность (Z Order)
Written on 18 Февраля 2007 . Posted in Win32
ОГЛАВЛЕНИЕ
Z-последовательность (Z Order)
Z-последовательность (Z order) окна обозначает позицию окна в стеке перекрывающихся окон. Этот оконный стек ориентируется по воображаемой оси, z-оси (оси аппликат), уходящей за пределы экрана. Окно наверху Z-последовательности перекрывает все другие окна. Окно внизу Z-последовательности перекрыто всеми другими окнами.
Windows Z-последовательность сохраняет в обычном списке. Добавляя окна в Z-последовательность, она основывается на том, что в любом случае они самые верхние окна, окна верхнего уровня или дочерние окна. Самое верхнее окно (topmost window) накладывается на все другие не самые верхние окна, независимо от того, является ли они активными или приоритетными окнами. Самое верхнее окно имеет стиль WS_EX_TOPMOST. Все самые верхние окна появляются в Z-последовательности перед любыми не самыми верхними окнами. Дочернее окно сгруппировано со своим родителем в Z-последовательности.
Когда прикладная программа создает окно, Windows помещает его наверху Z-последовательности для окон того же самого типа. Вы можете использовать функцию BringWindowToTop, чтобы перенести окно в верхнюю часть Z-последовательности для окон того же самого типа. Вы можете перестраивать Z-последовательность, используя функции SetWindowPos и DeferWindowPos.
Пользователь изменяет порядок Z-последовательности, активизируя различные окна. Windows устанавливает активное окно наверху Z-последовательности для окон того же самого типа. Когда окно переходит в верхнюю часть Z-последовательности, его дочерние окна делают это также. Вы можете использовать функцию GetTopWindow, чтобы отыскать все дочерние окна родительского окна и возвратить дескриптор дочернего окна, которое является самым высоким в Z-последовательности. Функция GetNextWindow извлекает данные о дескрипторе следующего или предыдущего окна в Z-последовательности.
How to get the z-order in windows?
I’m making an application where I interact with each running application. Right now, I need a way of getting the window’s z-order. For instance, if Firefox and notepad are running, I need to know which one is in front.
Any ideas? Besides doing this for each application’s main window I also need to do it for its child and sister windows (windows belonging to the same process).
5 Answers 5
You can use the GetTopWindow function to search all child windows of a parent window and return a handle to the child window that is highest in z-order. The GetNextWindow function retrieves a handle to the next or previous window in z-order.
If you need more reliability:
(According to the Remarks section on GetWindow , EnumChildWindows is safer than calling GetWindow in a loop because your GetWindow loop is not atomic to outside changes. According to the Parameters section for EnumChildWindows , calling with a null parent is equivalent to EnumWindows .)
Then instead of a separate call to EnumWindows for each window, which would also be not be atomic and safe from concurrent changes, you send each window you want to compare in a params array so their z-orders can all be retrieved at the same time.
Here is my C# solution: The function returns the zIndex among the siblings of the given HWND, starting at 0 for the lowest zOrder.
For get Z-Order implement this function (by using GetWindow Windows API function)
The return value is a zero-based index. Returning -1 indicates an invalid hWnd.
The approach is to go up through the windows to the top. The total number of climbs is the value of the Z-Order.
Not the answer you’re looking for? Browse other questions tagged c# .net windows z-order or ask your own question.
Linked
Related
Hot Network Questions
Subscribe to RSS
To subscribe to this RSS feed, copy and paste this URL into your RSS reader.
site design / logo © 2021 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2021.4.16.39093
By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.
Win32 API. Окна
Страница 4. Z-последовательность (Z Order)
Z-последовательность (Z Order)
Z-последовательность (Z order) окна обозначает позицию окна в стеке перекрывающихся окон. Этот оконный стек ориентируется по воображаемой оси, z-оси (оси аппликат), уходящей за пределы экрана. Окно наверху Z-последовательности перекрывает все другие окна. Окно внизу Z-последовательности перекрыто всеми другими окнами.
Windows Z-последовательность сохраняет в обычном списке. Добавляя окна в Z-последовательность, она основывается на том, что в любом случае они самые верхние окна, окна верхнего уровня или дочерние окна. Самое верхнее окно (topmost window) накладывается на все другие не самые верхние окна, независимо от того, является ли они активными или приоритетными окнами. Самое верхнее окно имеет стиль WS_EX_TOPMOST. Все самые верхние окна появляются в Z-последовательности перед любыми не самыми верхними окнами. Дочернее окно сгруппировано со своим родителем в Z-последовательности.
Когда прикладная программа создает окно, Windows помещает его наверху Z-последовательности для окон того же самого типа. Вы можете использовать функцию BringWindowToTop, чтобы перенести окно в верхнюю часть Z-последовательности для окон того же самого типа. Вы можете перестраивать Z-последовательность, используя функции SetWindowPos и DeferWindowPos.
Пользователь изменяет порядок Z-последовательности, активизируя различные окна. Windows устанавливает активное окно наверху Z-последовательности для окон того же самого типа. Когда окно переходит в верхнюю часть Z-последовательности, его дочерние окна делают это также. Вы можете использовать функцию GetTopWindow, чтобы отыскать все дочерние окна родительского окна и возвратить дескриптор дочернего окна, которое является самым высоким в Z-последовательности. Функция GetNextWindow извлекает данные о дескрипторе следующего или предыдущего окна в Z-последовательности.