как перетащить форму не за заголовок

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

как перетащить форму не за заголовок

Сообщение dorido » 20.04.2005 (Ср) 12:31

мне нужен код, как перетащить форму , с использованием image`а. Как перетащить форму за свободное место я знаю и сам

_Мика_
Гуру
Гуру
 
Сообщения: 1459
Зарегистрирован: 24.10.2003 (Пт) 15:05
Откуда: г. Москва, м.Речной вокзал

Сообщение _Мика_ » 20.04.2005 (Ср) 12:37

В Image_MouseDown вставляешь код и вперед!
-Папа, а правда, что форумы делают людей дибилами?
-гы гы гы, сынок, лол!

dorido
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 107
Зарегистрирован: 27.02.2005 (Вс) 17:10
Откуда: Angarsk

Сообщение dorido » 20.04.2005 (Ср) 12:38

какой

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

Сообщение GSerg » 20.04.2005 (Ср) 12:55

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

Alexander N. Samarin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 397
Зарегистрирован: 05.03.2005 (Сб) 20:59
Откуда: Интернат 18 (СУНЦ МГУ), комната 214А, кровать посередине

Сообщение Alexander N. Samarin » 20.04.2005 (Ср) 13:04

Есть милион мест, где это можно найти, а также FAQ
На это не смотрите! Это не подпись!!!!!!

step
Бывалый
Бывалый
 
Сообщения: 217
Зарегистрирован: 03.08.2004 (Вт) 16:19

Сообщение step » 20.04.2005 (Ср) 13:06

Люди, разве у image по стандарту есть hWnd ?

step
Бывалый
Бывалый
 
Сообщения: 217
Зарегистрирован: 03.08.2004 (Вт) 16:19

Сообщение step » 20.04.2005 (Ср) 13:08

Вот посмотри
Вложения
Пример.rar
Вот оно
(3.07 Кб) Скачиваний: 31

kirrun
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 06.04.2005 (Ср) 15:41
Откуда: Питер

Сообщение kirrun » 20.04.2005 (Ср) 14:17

step писал(а):Люди, разве у image по стандарту есть hWnd ?


А зачем тебе hWnd image'a??? Тыж форму таскать бушь!
"Единственный безопасный компьютер - это тот, который выключен из электросети, закрыт в сейфе, который зарыт 20 футов под землей в засекреченной местности. И то я не уверен относительно его безопасности."
(Деннис Хьюджес, ФБР)

step
Бывалый
Бывалый
 
Сообщения: 217
Зарегистрирован: 03.08.2004 (Вт) 16:19

Сообщение step » 20.04.2005 (Ср) 18:04

Ну если мы говорим про это, то....
Код: Выделить всё
Const WM_NCLBUTTONDOWN = &HA1
Const HTCAPTION = 2

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 Function ReleaseCapture Lib "user32" () As Long

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
ReleaseCapture
SendMessage Form1.hWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0
End Sub


Alexander N. Samarin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 397
Зарегистрирован: 05.03.2005 (Сб) 20:59
Откуда: Интернат 18 (СУНЦ МГУ), комната 214А, кровать посередине

Сообщение Alexander N. Samarin » 21.04.2005 (Чт) 8:15

А может человеку надо таскать форму ТОЛЬКО за Image???? :roll:
На это не смотрите! Это не подпись!!!!!!

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

Сообщение Amed » 21.04.2005 (Чт) 9:47

Тогда

Код: Выделить всё
Const WM_NCLBUTTONDOWN = &HA1
Const HTCAPTION = 2

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 Function ReleaseCapture Lib "user32" () As Long

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
if x>image1.left and x<(image1.left+image1.width) then
    if y>image1.top and y<(image1.top+image1.height) then
        ReleaseCapture
        SendMessage Form1.hWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0
    end if
end if
End Sub


Что может быть непонятного?

Шурик
Самогонщик
Самогонщик
Аватара пользователя
 
Сообщения: 1657
Зарегистрирован: 30.06.2003 (Пн) 13:27
Откуда: из запоя :))))) Матных сообщений: 972

Сообщение Шурик » 21.04.2005 (Чт) 11:38

Нееееееееее :)
тогда:
Код: Выделить всё
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 Const WM_NCLBUTTONDOWN = &HA1
Private Const HTCAPTION = 2

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim ReturnValue As Long
If Button = 1 Then
Call ReleaseCapture
ReturnValue = SendMessage(Me.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&)
End If
End Sub

step
Бывалый
Бывалый
 
Сообщения: 217
Зарегистрирован: 03.08.2004 (Вт) 16:19

Сообщение step » 21.04.2005 (Чт) 11:39

Не понятен один вопрос Amed почему твой код неработает?

step
Бывалый
Бывалый
 
Сообщения: 217
Зарегистрирован: 03.08.2004 (Вт) 16:19

Сообщение step » 21.04.2005 (Чт) 11:43

Шурик
Ну а если быть "в плотную" к вопросу, то
Код: Выделить всё
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 Const WM_NCLBUTTONDOWN = &HA1
Private Const HTCAPTION = 2

Private Sub Image1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim ReturnValue As Long
If Button = 1 Then
Call ReleaseCapture
ReturnValue = SendMessage(Me.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&)
End If
End Sub

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

Сообщение Amed » 21.04.2005 (Чт) 11:44

Я его не проверял. Написал принцип мышления: если координата мыши при нажатой кнопке находится внутри прямоугольника Image'а, то можно перетаскивать. Иначе-нет.

А не работает потому, что когда мыш над Имейджем, МаусДаун для формы не срабатывает. Надо так:
Код: Выделить всё
Const WM_NCLBUTTONDOWN = &HA1
Const HTCAPTION = 2

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 Function ReleaseCapture Lib "user32" () As Long

Private Sub Image1_MouseDown(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
ReleaseCapture
SendMessage Form1.hWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0
End Sub

Шурик
Самогонщик
Самогонщик
Аватара пользователя
 
Сообщения: 1657
Зарегистрирован: 30.06.2003 (Пн) 13:27
Откуда: из запоя :))))) Матных сообщений: 972

Сообщение Шурик » 21.04.2005 (Чт) 12:02

Гыыыы....
сорри офф:
"как перетащить форму не за загривок"

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

Сообщение Amed » 21.04.2005 (Чт) 13:12

"Не за шкирку" ;)


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

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

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

    TopList