Как сделать окно поверх других окон, и чтоб не модальное?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Как сделать окно поверх других окон, и чтоб не модальное?

Сообщение A.A.Z. » 15.09.2003 (Пн) 17:44

Сабж. Например, как здесь:
Изображение
Нет меня больше

Tarik
Агент Системы
Агент Системы
Аватара пользователя
 
Сообщения: 1222
Зарегистрирован: 03.01.2003 (Пт) 16:05
Откуда: Москва

Сообщение Tarik » 15.09.2003 (Пн) 21:59

В General:
Код: Выделить всё
Private Declare Function SetWindowPos Lib"user32"(ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

В процедуре:
Код: Выделить всё
'Включаем режим
SetWindowPos Me.hWnd, -1, _
Me.Left / Screen.TwipsPerPixelX, _
Me.Top / Screen.TwipsPerPixelY, _
Me.Width / Screen.TwipsPerPixelX, _
Me.Height / Screen.TwipsPerPixelY, _
&H10 Or &H40

'Выключаем режим
SetWindowPos Me.hWnd, -2, _
Me.Left / Screen.TwipsPerPixelX, _
Me.Top / Screen.TwipsPerPixelY, _
Me.Width / Screen.TwipsPerPixelX, _
Me.Height / Screen.TwipsPerPixelY, _
&H10 Or &H40
Изображение

Ever tried? Ever failed? No matter. Try again! Fail again! Fail better!

X-BOND
Реалист
Реалист
 
Сообщения: 944
Зарегистрирован: 19.08.2002 (Пн) 11:44
Откуда: Ukraine

Сообщение X-BOND » 16.09.2003 (Вт) 17:41

Можно преспокойно заменить всякие Me.Left / Screen.TwipsPerPixelX на 0 :wink:

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 16.09.2003 (Вт) 17:42

Хм.. А по моему можно просто сделать окну стиль ToolWindow и все :)

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 16.09.2003 (Вт) 20:19

Спасибо Tarik'у за код! :D

2 RayShade:
Чё-то я не понял, можно поподробнее? Где это ставить?
Нет меня больше

Tarik
Агент Системы
Агент Системы
Аватара пользователя
 
Сообщения: 1222
Зарегистрирован: 03.01.2003 (Пт) 16:05
Откуда: Москва

Сообщение Tarik » 16.09.2003 (Вт) 21:20

2A.A.Z.: Пожалуйста
2RayShade: Это в BorderStyle что ли? Пробовал - не помогает.
Изображение

Ever tried? Ever failed? No matter. Try again! Fail again! Fail better!

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 17.09.2003 (Ср) 17:45

Мне кажется, что RayShade имел в виду внешний вид toolwindow окна...

А код Tarik'а так же необходим :wink:

Shurik90
Обычный пользователь
Обычный пользователь
 
Сообщения: 84
Зарегистрирован: 15.06.2003 (Вс) 23:49

Сообщение Shurik90 » 30.09.2003 (Вт) 15:24

Я пользуюсь вот таким кодом:

Декларация функции:
Код: Выделить всё
Public Declare Function SetWindowPos& Lib "user32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long)


Процедура:
Код: Выделить всё
Private Sub AlwaysOnTop()
    Const NoResize = &H1, NoMove = &H2
    SetWindowPos Me.hWnd, -1, 0, 0, 0, 0, NoResize Or NoMove
End Sub

А потом только позвать процедуру:
Код: Выделить всё
Private Sub Form_Load()
    Call AlwaysOnTop
End Sub


Надеюсь поможет.[/code]

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 30.09.2003 (Вт) 23:10

2 Shurik90:
Да, твой код тоже работает. Спасибо :)
Нет меня больше

Shurik90
Обычный пользователь
Обычный пользователь
 
Сообщения: 84
Зарегистрирован: 15.06.2003 (Вс) 23:49

Сообщение Shurik90 » 01.10.2003 (Ср) 0:36

Не за что. Просто он короткий и понятный. :lol:


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 51

    TopList