На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual Basic: Общие вопросы
Здесь обсуждаются вопросы по языку Visual Basic 1-6 (а так же по схожим языкам, как, например, PowerBASIC).
Вопросы по Visual Basic .NET (это который входит в состав Visual Studio 2002/2003/2005/2008+, для тех, кто не в курсе) обсуждаются в разделе .NET.

Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что Вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются. Студенты, вам сюда: ПОМОЩЬ СТУДЕНТАМ!
4. Используйте теги [ code=vba ] ...текст программы... [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Формулируйте свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной (и более) давности, без веских на то причин.

Полезные ссылки:
user posted image FAQ Сайта user posted image FAQ Раздела user posted image Кладовка user posted image Наши Исходники user posted image API-Guide user posted image Поиск по Разделу user posted image MSDN Library Online user posted image Google

Ваше мнение о модераторах: user posted image SCINER, user posted image B.V.
Модераторы: SCINER, B.V.
  
> Тест WM_LBUTTONDOWN
    На форме посекундный таймер. Запускаю, перемещаю форму случайно по экрану, на выводе вижу:
    Form_MouseDown: -3632, 19
    Form_MouseDown: -1320, 19
    Form_MouseDown: -3632, 19
    Form_MouseDown: -1320, 19
    Form_MouseDown: -3632, 19
    Form_MouseDown: -1320, 19
    Form_MouseDown: -3632, 19
    Form_MouseDown: -1320, 19
    Form_MouseDown: -1320, 19
    Form_MouseDown: -1320, 19
    Form_MouseDown: -1320, 19
    Form_MouseDown: -1320, 19
    ...

    Т.е. X получает только 2 значения, Y не меняется. Почему? Клик происходит в постоянной точке (экрана же?), форма перемещается - координаты относительно формы должны постоянно меняться.

    ExpandedWrap disabled
      Private Const WM_LBUTTONDOWN = &H201
      Private Const WM_LBUTTONUP = &H202
       
      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 Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
       Debug.Print "Form_MouseDown: " & CStr(X / 15) & ", " & CStr(Y / 15)
      End Sub
       
      Private Sub Timer1_Timer()
      Dim lRet As Long
          lRet = 50 * 65536 + 50  'lParam: hiword= y-coordinate, loword=x-coordinate
          SendMessage Me.hWnd, WM_LBUTTONDOWN, 0&, lRet
          SendMessage Me.hWnd, WM_LBUTTONUP, 0&, lRet
       
      End Sub
    Сообщение отредактировано: BlackSun -
      Цитата BlackSun @
      Клик происходит в постоянной точке (экрана же?)

      Form_MouseDown обрабатывает в координатах формы.
      В какой точке происходит клик?
        Цитата B.V. @
        В какой точке происходит клик?
        относительно ли экрана, относительно ли формы - результат непонятен. Относительно экрана - результат должен быть переменным, относительно формы - результат должен быть X=50; Y=50.
          Прикрепи сюда тестовый проект.
            Цитата B.V. @
            Прикрепи сюда тестовый проект.

            Код же выложил. Это всё.
              Никто не видит в чём проблема, такой простой код поставил всех в тупик?
                Всем спасибо, форум бесполезен. Сам разобрался.
                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                0 пользователей:


                Рейтинг@Mail.ru
                [ Script execution time: 0,0276 ]   [ 16 queries used ]   [ Generated: 28.03.24, 20:35 GMT ]