Страница: 1 |
Страница: 1 |
Вопрос: StayOnTop
Добавлено: 08.05.05 12:18
Автор вопроса: Diz | Web-сайт:
А кто подскажет, как сделать форму поверх всех остальных? Чтобы она постоянно сверху была?
Ответы
Всего ответов: 13
Номер ответа: 1
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #1
Добавлено: 08.05.05 12:44
SetWindowPos Me.hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE
Номер ответа: 2
Автор ответа:
Barsik
Разработчик Offline Client
ICQ: 343368641
Вопросов: 17
Ответов: 686
Web-сайт:
Профиль | | #2
Добавлено: 08.05.05 17:53
а мона и процедуру написать )
Public Sub SetFormPosition(hWnd As Long, TopPosition As Boolean)
If TopPosition Then
SetWindowPos hWnd, HWND_TOPMOST, 0, 0, 0, 0, _
SWP_NOACTIVATE Or SWP_NOSIZE Or SWP_NOMOVE
Else
SetWindowPos hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, _
SWP_NOSIZE Or SWP_NOMOVE
End If
End Sub
Номер ответа: 3
Автор ответа:
Diz
Вопросов: 24
Ответов: 38
Web-сайт:
Профиль | | #3
Добавлено: 08.05.05 18:00
Хотелось бы ещё узнать, как её вызывать.... Второй пораметр true, это понятно, а что в первом передовать?? И как?
Номер ответа: 4
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #4
Добавлено: 08.05.05 18:20
Если уж так необходимо выделять в отдельную ф-цию, то можно сократить количество кода:
Const NOTOPMOST = -2
Public Sub SetOnTop(hWnd As Long, Position As Long)
SetWindowPos hWnd, Position, 0, 0, 0, 0, _
SWP_NOACTIVATE Or SWP_NOSIZE Or SWP_NOMOVE
End Sub
'поставить поверх
SetOnTop Me.hWnd, TOPMOST
'убрать
SetOnTop Me.hWnd, NOTOPMOST
Только зачем одну единственную функцию оборачивать ещё одной, для лишнего тормоза и увеличение размера кода?
Если так, то можно ещё класс написать по постановке окна topmost, или ActiveX забабахать
Номер ответа: 5
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #5
Добавлено: 08.05.05 22:13
А как забабахать окно, которое бкдет поверх окон только в моём приложении? Пример: Окно поиска в блокноте
Номер ответа: 6
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #6
Добавлено: 08.05.05 22:16
Call Me.Show(vbmodeless, frmOwner)
Номер ответа: 7
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #7
Добавлено: 08.05.05 22:29
Ага, а я вот знаю, чтоб окно было поверх даже Дистпетчера, при том, что Диспетчер АКТИВЕН.
Это очень просто:
Call SetOnTop(hWnd As Long, True)
End Sub
P.S У таймера Interval=1
Номер ответа: 8
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #8
Добавлено: 08.05.05 22:39
Ну, Interval=1 это уже перебор, так как в 9х интервал таймера равен 55*N Ms, а в NT 10*N Ms. Кажись так.
Кстати, про таймеры...если мне например нужен таймер с маленьким интервалом, то я юзаю цикл типа
Do while app_runned
 oEvents
Sleep X
<o Something>
loop
А как сделать нормальный мультимедийный таймер через АПИ???
Номер ответа: 9
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #9
Добавлено: 09.05.05 14:31
Ну, воопсчем, ты прав...
Номер ответа: 10
Автор ответа:
Александр
Разработчик Offline Client
ICQ: 204034
Вопросов: 106
Ответов: 1919
Профиль | | #10
Добавлено: 12.05.05 08:05
Выпендрится чтоли? )
Public Sub SetOnTop(ByVal hwnd As Long, Optional bOnTop As Boolean = True)
Call SetWindowPos(hwnd, IIf(bOnTop, &HFFFF, &HFFFE), &H0, &H0, &H0, &H0, &H1 Or &H3)
End Sub
Номер ответа: 11
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #11
Добавлено: 12.05.05 11:07
А теперь скажи откуда этот код взял У меня такой же )
' Проект : OfflineClient
' Процедура : AlwaysOnTop
' Описание : Поверх всех окон
' Кем создан : SNE
' Дата-Время : 07.11.2004-19:08:55
'
' Параметры : hWnd - хэндл окна
' OnTop - Вкл.\Откл. режима "поверх всех"
'--------------------------------------------------------------------------------
Public Sub AlwaysOnTop(ByVal hwnd As Long, ByVal OnTop As Boolean)
Call SetWindowPos(hwnd, IIf(OnTop, &HFFFF, &HFFFE), &H0, &H0, &H0, &H0, &H1 Or &H3)
End Sub
Номер ответа: 12
Автор ответа:
Александр
Разработчик Offline Client
ICQ: 204034
Вопросов: 106
Ответов: 1919
Профиль | | #12
Добавлено: 12.05.05 13:28
А я копирайты и не присваиваю, но и не пишу их
Номер ответа: 13
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #13
Добавлено: 12.05.05 15:07
))