Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: StayOnTop Добавлено: 08.05.05 12:18  

Автор вопроса:  Diz | Web-сайт: www.TS-Group.fatal.ru
А кто подскажет, как сделать форму поверх всех остальных? Чтобы она постоянно сверху была?

Ответить

  Ответы Всего ответов: 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-сайт: barsik.newmail.ru
 Профиль | | #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-сайт: www.TS-Group.fatal.ru
 Профиль | | #3
Добавлено: 08.05.05 18:00
Хотелось бы ещё узнать, как её вызывать.... Второй пораметр true, это понятно, а что в первом передовать?? И как?

Ответить

Номер ответа: 4
Автор ответа:
 HOOLIGAN



Вопросов: 0
Ответов: 1066
 Профиль | | #4 Добавлено: 08.05.05 18:20
Если уж так необходимо выделять в отдельную ф-цию, то можно сократить количество кода:

Const TOPMOST = -1
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-сайт: xury.zx6.ru
 Профиль | | #5
Добавлено: 08.05.05 22:13
А как забабахать окно, которое бкдет поверх окон только в моём приложении? Пример: Окно поиска в блокноте

Ответить

Номер ответа: 6
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #6
Добавлено: 08.05.05 22:16
Call Me.Show(vbmodeless, frmOwner)

Ответить

Номер ответа: 7
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #7 Добавлено: 08.05.05 22:29
Ага, а я вот знаю, чтоб окно было поверх даже Дистпетчера, при том, что Диспетчер АКТИВЕН.
Это очень просто:

Private Sub Timer1_Timer()
Call SetOnTop(hWnd As Long, True)
End Sub


P.S У таймера Interval=1

Ответить

Номер ответа: 8
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #8
Добавлено: 08.05.05 22:39
Ну, Interval=1 это уже перебор, так как в 9х интервал таймера равен 55*N Ms, а в NT 10*N Ms. Кажись так.
Кстати, про таймеры...если мне например нужен таймер с маленьким интервалом, то я юзаю цикл типа

Do while app_runned
   ;DoEvents
   Sleep X
   <;Do 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-сайт: hw.t-k.ru
 Профиль | | #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
:)))

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам