powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / узнать zOrder окна
17 сообщений из 17, страница 1 из 1
узнать zOrder окна
    #34123385
Фотография SmeL_md
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересует Апишка которая вернет zOrder окна
...
Рейтинг: 0 / 0
узнать zOrder окна
    #34123409
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В каком смысле? zOrder - это, насколько я помню, функция.
...
Рейтинг: 0 / 0
узнать zOrder окна
    #34123445
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zOrder - поднять или спрятать окно сзади. можно только активное окно найти, не более того, я думаю

аффтопитезь
...
Рейтинг: 0 / 0
узнать zOrder окна
    #34123491
Фотография SmeL_md
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aklin меня не обрадовал но может, кто то встречал такую апишку :)
...
Рейтинг: 0 / 0
узнать zOrder окна
    #34123618
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SmeL_mdAklin меня не обрадовал но может, кто то встречал такую апишку :)

можно попробовать долго и упорно издеваться: взять активное окно, спратать, опять активное (онон будет 2м) и т.д. до тех пор, пока все не пройдем.

кстати, тема: есть два окна always on top которое из них будет сверху (проверить можно, например на аське и Windows Media Player)

того по логике получается, что должно храниться где-то "плоскость" окна отнисительно топа.
...
Рейтинг: 0 / 0
узнать zOrder окна
    #34124449
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В форме:

Option Explicit

Private Declare Function GetTopWindow Lib "user32" (ByVal hwnd As Long) As Long
Private mobjHandles As New Dictionary 'Нужна ссылка на Microsoft Scripting Runtime

Private Sub Command1_Click()
Dim lngTopWindowHandle As Long

lngTopWindowHandle = GetTopWindow(Me.hwnd)

MsgBox mobjHandles.Item(lngTopWIndowHandle).Name
End Sub

Private Sub Form_Load()
Dim oControl As Control

On Error Resume Next

For Each oControl In Me.Controls
mobjHandles.Add oControl.hwnd, oControl
Next oControl

End Sub

VladConn
...
Рейтинг: 0 / 0
узнать zOrder окна
    #34124500
Фотография SmeL_md
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2VladConn
Спасибо хороший пример но не по вопросу данного топа
...
Рейтинг: 0 / 0
узнать zOrder окна
    #34124515
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как так? Каков вопрос...
...
Рейтинг: 0 / 0
узнать zOrder окна
    #34124573
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОК, в дополнение к вышеизложенному этот пример перечислит имена контролей в порядке ZOrder, кроме Top. Последний - см. предыдущий пример.

Option Explicit

Private Declare Function GetNextWindow Lib "user32" Alias "GetWindow" (ByVal hwnd As Long, ByVal wFlag As Long) As Long
Private Const GW_HWNDNEXT = 2
Private Const GW_HWNDPREV = 3
Private mobjHandles As New Dictionary

Private Sub Command1_Click()
Dim lngNextWindowHandle As Long
Dim oControl As Control

On Error Resume Next
For Each oControl In Me.Controls

lngNextWindowHandle = GetNextWindow(oControl.hwnd, GW_HWNDNEXT)
MsgBox mobjHandles.Item(lngNextWindowHandle).Name
Next oControl

End Sub

Private Sub Form_Load()
Dim oControl As Control
On Error Resume Next

For Each oControl In Me.Controls
mobjHandles.Add oControl.hwnd, oControl
Next oControl

End Sub
...
Рейтинг: 0 / 0
узнать zOrder окна
    #34125251
Фотография SmeL_md
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2VladConn Очередной раз спасибо но меня интересуют значения Z окон приложений, а не их детей и темболее не их имена.
...
Рейтинг: 0 / 0
узнать zOrder окна
    #34125322
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, я понимаю. Эти значения идут в том порядке, в каком и имена. Правильно? Вот в том порядке, каком идут имена и присваивайте условные значения Z order. Пример дан для неграфических контролей, которые тоже окна. Там остаются, насколько я понимаю, MDI child формы (1й уровень), и метки с графическими объектами (3й уровень). А для остального, по-моему Z order в VB6 не используется.
...
Рейтинг: 0 / 0
узнать zOrder окна
    #34125377
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladConnДа, я понимаю. Эти значения идут в том порядке, в каком и имена. Правильно? Вот в том порядке, каком идут имена и присваивайте условные значения Z order. Пример дан для неграфических контролей, которые тоже окна. Там остаются, насколько я понимаю, MDI child формы (1й уровень), и метки с графическими объектами (3й уровень). А для остального, по-моему Z order в VB6 не используется.

ему нужны zOrder ы окон в системе, а вы даете zOrder компонентов на форме
...
Рейтинг: 0 / 0
узнать zOrder окна
    #34125408
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я исхожу из определения и смысла ZOrder в VB6
...
Рейтинг: 0 / 0
узнать zOrder окна
    #34125522
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aklinему нужны zOrder ы окон в системе, а вы даете zOrder компонентов на формеВообще-то, любой компонент на форме это тоже окно. Читайте MSDN, там много интересного есть.

Z order напрямую прочитать нельзя. Можно только воспользоваться парой функций:
GetTopWindow()/GetNextWindow. Или функцией GetWindow() с опициями GW_HWNDFIRST/GW_HWNDNEXT. VladConn уже показывал как именно
...
Рейтинг: 0 / 0
узнать zOrder окна
    #34125789
Фотография SmeL_md
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl Aklinему нужны zOrder ы окон в системе, а вы даете zOrder компонентов на формеВообще-то, любой компонент на форме это тоже окно. ...Компоненты меня не интересуют, намного проще порядок узнать функцией EnumWindows. меня интересовали значения Z Ordera. Есть два окна hwnd1 hwnd2 нужно было сравнить их Z позиции и все.
...
Рейтинг: 0 / 0
узнать zOrder окна
    #34125956
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SmeL_mdКомпоненты меня не интересуют, намного проще порядок узнать функцией EnumWindows. меня интересовали значения Z Ordera. Есть два окна hwnd1 hwnd2 нужно было сравнить их Z позиции и все.

для двух тривиально: кто Active тот и сверху
пусть верно для N-1
посмотрим, что получится для N окон:
кто сверху, тот и 0, свернем 0 (или разместим даааалеко сзади), получим второе окно, с -1. т.о. имеет N-1 случай.
...
Рейтинг: 0 / 0
узнать zOrder окна
    #34126008
Фотография SmeL_md
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Aklin Не надо ничего сворачивать или перемещать если нет возможности узнать Z позицию окна не переберая окна, то EnumWindows вернет последовательность окон в порядке Z. Меня интересовала функция подобно
GetZOrder (ByVal hwnd As Long) As Long но такой повидимому нет. Если кто встретит подкиньте в топик ;)
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / узнать zOrder окна
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]