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

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

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

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

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

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
13.11.2006, 16:31
    #34124500
SmeL_md
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
узнать zOrder окна
2VladConn
Спасибо хороший пример но не по вопросу данного топа
...
Рейтинг: 0 / 0
13.11.2006, 16:33
    #34124515
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
узнать zOrder окна
Как так? Каков вопрос...
...
Рейтинг: 0 / 0
13.11.2006, 16:45
    #34124573
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
узнать zOrder окна
ОК, в дополнение к вышеизложенному этот пример перечислит имена контролей в порядке 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
13.11.2006, 20:51
    #34125251
SmeL_md
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
узнать zOrder окна
2VladConn Очередной раз спасибо но меня интересуют значения Z окон приложений, а не их детей и темболее не их имена.
...
Рейтинг: 0 / 0
13.11.2006, 21:43
    #34125322
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
узнать zOrder окна
Да, я понимаю. Эти значения идут в том порядке, в каком и имена. Правильно? Вот в том порядке, каком идут имена и присваивайте условные значения Z order. Пример дан для неграфических контролей, которые тоже окна. Там остаются, насколько я понимаю, MDI child формы (1й уровень), и метки с графическими объектами (3й уровень). А для остального, по-моему Z order в VB6 не используется.
...
Рейтинг: 0 / 0
13.11.2006, 22:31
    #34125377
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
узнать zOrder окна
VladConnДа, я понимаю. Эти значения идут в том порядке, в каком и имена. Правильно? Вот в том порядке, каком идут имена и присваивайте условные значения Z order. Пример дан для неграфических контролей, которые тоже окна. Там остаются, насколько я понимаю, MDI child формы (1й уровень), и метки с графическими объектами (3й уровень). А для остального, по-моему Z order в VB6 не используется.

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

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

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


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