Не могу понять...

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

Не могу понять...

Сообщение Naked » 18.08.2005 (Чт) 8:39

WM_NCLBUTTONUP работает нормально тогда, когда:
1. Свойство формы Moveable установлено False
2. Форма находится в развернутом состоянии

При нормальном отображении формы, WM_NCLBUTTONUP срабатывает как WM_NCLBUTTONDBLCLK

как быть что делать?

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

Сообщение GSerg » 18.08.2005 (Чт) 9:36

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

Naked
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 207
Зарегистрирован: 27.10.2004 (Ср) 3:16
Откуда: Дальнегорск столица мира

Сообщение Naked » 18.08.2005 (Чт) 9:42

GSerg нужно чтобы WM_NCLBUTTONUP срабатывал нормально, т.е одним щелчком мыши, при Moveable = True и WindowState = 0

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

Сообщение GSerg » 18.08.2005 (Чт) 9:48

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

Naked
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 207
Зарегистрирован: 27.10.2004 (Ср) 3:16
Откуда: Дальнегорск столица мира

Сообщение Naked » 18.08.2005 (Чт) 9:53

мне надо чтобы в WM_NCLBUTTONUP срабатывала моя процедура

щас опять скажет что не понял... :?

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

Сообщение GSerg » 18.08.2005 (Чт) 9:58

The WM_NCLBUTTONUP message is posted when the user releases the left mouse button while the cursor is within the nonclient area of a window. This message is posted to the window that contains the cursor. If a window has captured the mouse, this message is not posted.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Naked
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 207
Зарегистрирован: 27.10.2004 (Ср) 3:16
Откуда: Дальнегорск столица мира

Сообщение Naked » 19.08.2005 (Пт) 2:31

а примерчик можно?

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

Сообщение GSerg » 19.08.2005 (Пт) 2:48

Повторяю на русском языке специально для тех, кто не удосужился прочитать смысл написанного.

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

Юстас
Бывалый
Бывалый
 
Сообщения: 200
Зарегистрирован: 24.10.2003 (Пт) 5:05

Сообщение Юстас » 19.08.2005 (Пт) 3:49

используй ReleaseCapture

Naked
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 207
Зарегистрирован: 27.10.2004 (Ср) 3:16
Откуда: Дальнегорск столица мира

Сообщение Naked » 19.08.2005 (Пт) 4:02

да вот сижу пользую, только форма у меня никуда не двигается

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

Сообщение GSerg » 19.08.2005 (Пт) 4:07

Конечно, поэтому я тебе её и не предлагал.

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

Юстас
Бывалый
Бывалый
 
Сообщения: 200
Зарегистрирован: 24.10.2003 (Пт) 5:05

Сообщение Юстас » 19.08.2005 (Пт) 4:55

Naked писал(а):да вот сижу пользую, только форма у меня никуда не двигается


Код: Выделить всё
    .elseif uMsg==WM_NCLBUTTONDOWN
        invoke DefWindowProc,hWin,uMsg,wParam,lParam
        invoke  Beep,1000,10
        invoke  ReleaseCapture

       
    .elseif uMsg==WM_NCLBUTTONUP
        invoke DefWindowProc,hWin,uMsg,wParam,lParam



Вот так бикает при отпускании мыши, хотя Beep стоит в обработке нажатия. И окно передвигается, и разворачивается и сворачивается и закрывается, все как положено. Попробуй вставь вместо Beep свой код.
Перевести на VB думаю не составит труда.

Naked
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 207
Зарегистрирован: 27.10.2004 (Ср) 3:16
Откуда: Дальнегорск столица мира

Сообщение Naked » 19.08.2005 (Пт) 6:32

ну все, спасибо тебе

Naked
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 207
Зарегистрирован: 27.10.2004 (Ср) 3:16
Откуда: Дальнегорск столица мира

Сообщение Naked » 19.08.2005 (Пт) 7:06

ну все, спасибо тебе
а ReleaseCapture там зачем, без него тоже работает нормально

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

Сообщение GSerg » 19.08.2005 (Пт) 7:14

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

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

Сообщение GSerg » 19.08.2005 (Пт) 7:24

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

Naked
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 207
Зарегистрирован: 27.10.2004 (Ср) 3:16
Откуда: Дальнегорск столица мира

Сообщение Naked » 19.08.2005 (Пт) 7:40

при нажатии и отпуске кнопки мыши на баре, и все

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

Сообщение GSerg » 19.08.2005 (Пт) 7:43

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

Naked
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 207
Зарегистрирован: 27.10.2004 (Ср) 3:16
Откуда: Дальнегорск столица мира

Сообщение Naked » 19.08.2005 (Пт) 7:47

угу, спасибо за помощь

Юстас
Бывалый
Бывалый
 
Сообщения: 200
Зарегистрирован: 24.10.2003 (Пт) 5:05

Сообщение Юстас » 19.08.2005 (Пт) 14:27

Naked

То, что по сообщению WM_NCLBUTTONDOWN будет вписано до вызова DefWindowProc будет выполняться при нажатии мыши, после DefWindowProc - при отпускании мыши.

Код: Выделить всё
    .elseif eax==WM_NCLBUTTONDOWN
        ;тут код, выполняемый по BUTTONDOWN
        invoke  Beep,2000,10
        ;
        invoke DefWindowProc,hWin,uMsg,wParam,lParam
        ;тут код, выполняемый по BUTTONUP
        invoke  Beep,1000,10
        ;
        ;invoke  ReleaseCapture


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

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

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

    TopList