Таскание формы мышей

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
HotKitten
Дятил
Дятил
Аватара пользователя
 
Сообщения: 400
Зарегистрирован: 24.01.2005 (Пн) 21:48
Откуда: из дома

Таскание формы мышей

Сообщение HotKitten » 13.06.2005 (Пн) 17:17

Как таскать форму за любую её часть?
че-то в поиске поковырялся - не нашёл
Изображение

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 13.06.2005 (Пн) 17:23

Искал, значит?
Скажи мне, почему я первым же запросом нашёл 4 темы?

http://bbs.vbstreets.ru/viewtopic.php?p=41977#41977
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

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

Сообщение A.A.Z. » 13.06.2005 (Пн) 23:51

Потому что ты искал по ReleaseCapture ;) Угадал?

HotKitten
Дятил
Дятил
Аватара пользователя
 
Сообщения: 400
Зарегистрирован: 24.01.2005 (Пн) 21:48
Откуда: из дома

Сообщение HotKitten » 14.06.2005 (Вт) 1:15

GSerg писал(а):Искал, значит?
Скажи мне, почему я первым же запросом нашёл 4 темы?

http://bbs.vbstreets.ru/viewtopic.php?p=41977#41977

а каким ты запросом искал???
Изображение

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 14.06.2005 (Вт) 5:10

Не угадал! По HT_CAPTION :D

Но любой мог бы найти по
http://www.yandex.ru/yandsearch?ras=1&d ... ets.ru&ds=
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

HotKitten
Дятил
Дятил
Аватара пользователя
 
Сообщения: 400
Зарегистрирован: 24.01.2005 (Пн) 21:48
Откуда: из дома

Сообщение HotKitten » 14.06.2005 (Вт) 10:37

гениально
Изображение

schalexey
Обычный пользователь
Обычный пользователь
 
Сообщения: 96
Зарегистрирован: 18.02.2005 (Пт) 17:41
Откуда: Сургут

Сообщение schalexey » 14.06.2005 (Вт) 13:04

Код: Выделить всё
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Sub ReleaseCapture Lib "user32" ()

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
   If Button = 1 Then
Call ReleaseCapture
Call SendMessage(hwnd, &HA1, 2, 0&)
   End If

End Sub

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 14.06.2005 (Вт) 15:24

schalexey, продолжаешь славную традицию постить не читая?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

schalexey
Обычный пользователь
Обычный пользователь
 
Сообщения: 96
Зарегистрирован: 18.02.2005 (Пт) 17:41
Откуда: Сургут

Сообщение schalexey » 14.06.2005 (Вт) 21:14

GSerg да вродь читал... может не так понял.. но имеено этот код использую для таскания форм (без рамок), а по ссылкам неходил (если ты про это)

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 15.06.2005 (Ср) 4:41

Да, я про это, потому что по ссылкам именно этот код.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

anian
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 116
Зарегистрирован: 02.10.2002 (Ср) 12:05
Откуда: /dev/null

Сообщение anian » 15.06.2005 (Ср) 9:15

А вот чего и как надо послать окошку, чтоб при его таскании таскалась не рамка, а все окно?
Трез-вы-ми мы не сда-дим-сииии!!! Ураааааа!!!

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Re: Таскание формы мышей

Сообщение ALX_2002 » 15.06.2005 (Ср) 10:00

2 Anian: Может я чего то не понял... Но вообще то тема как раз о таскании формы за ЛЮБУЮ часть. :wink:

HotKitten писал(а):Как таскать форму за любую её часть?
че-то в поиске поковырялся - не нашёл

anian
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 116
Зарегистрирован: 02.10.2002 (Ср) 12:05
Откуда: /dev/null

Re: Таскание формы мышей

Сообщение anian » 15.06.2005 (Ср) 15:45

ALX_2002 писал(а):2 Anian: Может я чего то не понял... Но вообще то тема как раз о таскании формы за ЛЮБУЮ часть. :wink:


Ты не понял :)...таскать я ее и так таскаю...только таскается контур окна, а не все окно...настройки винды такие...а нада что бы не зависело от настроек и таскалось само окно...
Трез-вы-ми мы не сда-дим-сииии!!! Ураааааа!!!

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 15.06.2005 (Ср) 16:01

это вопрос не к окну , а к настройке винды (есть такое свойство: Show window content while dragging):shock:

anian
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 116
Зарегистрирован: 02.10.2002 (Ср) 12:05
Откуда: /dev/null

Сообщение anian » 15.06.2005 (Ср) 16:09

Konst_One писал(а):это вопрос не к окну , а к настройке винды (есть такое свойство: Show window content while dragging):shock:


Вот об ентом я и говорю! Как обойти эту настройку? Ведь при перетаскивании окну какая-то мессага посылается...
Трез-вы-ми мы не сда-дим-сииии!!! Ураааааа!!!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 15.06.2005 (Ср) 16:14

WM_MOVING...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

HotKitten
Дятил
Дятил
Аватара пользователя
 
Сообщения: 400
Зарегистрирован: 24.01.2005 (Пн) 21:48
Откуда: из дома

Сообщение HotKitten » 16.06.2005 (Чт) 23:28

schalexey писал(а):
Код: Выделить всё
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Sub ReleaseCapture Lib "user32" ()

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
   If Button = 1 Then
Call ReleaseCapture
Call SendMessage(hwnd, &HA1, 2, 0&)
   End If

End Sub


а этот код гораздо прикольнее, чем GSerg писал
Изображение

extHack
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 94
Зарегистрирован: 04.06.2005 (Сб) 12:31
Откуда: 127.0.0.1

Сообщение extHack » 17.06.2005 (Пт) 7:38

Какая разница кто писал этот код :twisted:
Я его тоже видел на vbrussian.com
n/a

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 17.06.2005 (Пт) 9:12

HotKitten писал(а):а этот код гораздо прикольнее, чем GSerg писал

Покажи мне, пожайлуста, место, где я писал другой код...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

schalexey
Обычный пользователь
Обычный пользователь
 
Сообщения: 96
Зарегистрирован: 18.02.2005 (Пт) 17:41
Откуда: Сургут

Сообщение schalexey » 17.06.2005 (Пт) 13:56

HotKitten код обсолютно одинаковый просто у меня не указаны константы а сразу подставлены значения (можешь сравнить).

HotKitten
Дятил
Дятил
Аватара пользователя
 
Сообщения: 400
Зарегистрирован: 24.01.2005 (Пн) 21:48
Откуда: из дома

Сообщение HotKitten » 18.06.2005 (Сб) 0:55

schalexey в твоём варианте удобнее, что не надо прописывать mouseup и mousedown, потому, что когда на форме много объектов - много кода получается
Изображение

anian
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 116
Зарегистрирован: 02.10.2002 (Ср) 12:05
Откуда: /dev/null

Сообщение anian » 18.06.2005 (Сб) 8:30

Дык что? Как все-таки мовить весть контент окна, а не только его контур?

to GSerg: Вопрос я поставил не корректно... :) WM_MOVING посылается, однозначно...но может там параметр какой есть - например WM_MOVING+FULL_CONTENT или WM_MOVING+BORDER_ONLY :D
Трез-вы-ми мы не сда-дим-сииии!!! Ураааааа!!!

Дмитрий_pro
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 20.06.2005 (Пн) 15:21
Откуда: Косторма

Hm............ :)

Сообщение Дмитрий_pro » 20.06.2005 (Пн) 16:23

Лично мне нравится такой код:

Public BarX
Public BarY

Private Sub frmMain_MouseDown(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
If Button = 1 Then BarY = Y: BarX = X
End Sub

Private Sub frmMain_MouseMove(Button As Integer, Shift As Integer, _
X As Single, Y As Single)

If Button = 1 Then
frmMain.Top = frmMain.Top + Y - BarY
frmMain.Left = frmMain.Left + X - BarX
end if

End Sub
К людям надо относиться мягче, а к себе шерше!


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 104

    TopList