Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> подпрограммы и модули 
:(
    Опции темы
Wedi
Дата 17.3.2019, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 10.3.2019

Репутация: -1
Всего: -1



привет друзья!
есть код который я хочу "спрятать" в модуль
Код

'Module1:
Public Declare Function SendMessage Lib "User32" Alias "SendMessageA" (ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Sub ReleaseCapture Lib "User32" ()
Public Const WM_NCLBUTTONDOWN = &HA1
Public Const HTCAPTION = 2
 
Public Sub g_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
   Dim ReturnValue As Long
   If Button = 1 Then
      ReleaseCapture
      ReturnValue = SendMessage(Me.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&)
   End If
End Sub

можно ли и как вызвать подпрограмму g_MouseDown в Form1
не могу понять что делать с аргументами. как их указать?
PM MAIL   Вверх
_zorn_
Дата 17.3.2019, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 998
Регистрация: 21.8.2007

Репутация: нет
Всего: 12



Видимо вы не туда обратились. Да и вообще VB - серьезно ? Беги от него, дорогой  smile 
PM MAIL   Вверх
Akina
Дата 18.3.2019, 08:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20424
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 32
Всего: 449



Цитата(Wedi @  17.3.2019,  20:34 Найти цитируемый пост)
можно ли и как вызвать подпрограмму g_MouseDown в Form1

Код

Call g_MouseDown(передать правильные параметры)



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Wedi
Дата 18.3.2019, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 10.3.2019

Репутация: -1
Всего: -1



Akina, спасибо! мне уже объяснили что процедуры получающие события не могут переноситься в модуль
и "передать правильные параметры" не получится поскольку они постоянно меняются: координаты мыши, состояние кнопок и т.д.

PM MAIL   Вверх
Akina
Дата 19.3.2019, 07:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20424
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 32
Всего: 449



Цитата(Wedi @  18.3.2019,  18:16 Найти цитируемый пост)
мне уже объяснили что процедуры получающие события не могут переноситься в модуль

Обработчики - да, не могут. А вот процедуры, которые этот обработчик вызывает - запросто.
Т.е. в модуле формы
Код

Public Sub g_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
Call MySub(Button, Me.hwnd)
End Sub


а в обычном модуле
Код

Public Sub MySub(Button As Integer, hwnd As Long)
   If Button = 1 Then
      ReleaseCapture
      Call SendMessage(hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&)
   End If
End Sub

Дефиниции, поскольку Public, формально можно размещать и там, и там, хотя правильнее - там, где они используются, т.е. в обычном модуле (я лично вообще предпочитаю под Public-дефиниции делать отдельный модуль).
Цитата(Wedi @  18.3.2019,  18:16 Найти цитируемый пост)
"передать правильные параметры" не получится поскольку они постоянно меняются: координаты мыши, состояние кнопок и т.д.

То есть это - обработчик события MouseDown некоего контрола с именем "g"? но тогда при этом событии вызов процедуры выполняется автоматически, и с подстановкой правильных параметров - и я не понимаю, почему вообще мог возникнуть этот вопрос...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Wedi
Дата 19.3.2019, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 10.3.2019

Репутация: -1
Всего: -1



Akina, "почему вообще мог возникнуть этот вопрос..."

потому что я думал что может быть есть лазейка
что-то вроде указателя который подскажет компилятору
что динамические аргументы можно не указывать и он передаст
управление системе в модуль. это же просто

PM MAIL   Вверх
Akina
Дата 19.3.2019, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20424
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 32
Всего: 449



Wedi, форма - это класс. Обработчик события класса, как и любой другой его компонент, обязан быть в модуле класса, ну хотя бы потому, что в противном случае утрачивается доступ к приватным определениям, константам и переменным уровня класса.

Хотя формальная лазейка есть - класс можно сабклассить...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Wedi
Дата 20.3.2019, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 10.3.2019

Репутация: -1
Всего: -1



Akina,  в любом случае эта тема исчерпала себя и спасибо за помощь

а _zorn_ у, я отвечу что для моих целей vb6 хватает поскольку я не
программист а исследователь

Это сообщение отредактировал(а) Wedi - 20.3.2019, 09:53
PM MAIL   Вверх
Google
  Дата 16.10.2019, 07:37 (ссылка)  





  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0676 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.