Страница: 1 |
Страница: 1 |
Вопрос: Callback implementation
Добавлено: 07.08.06 22:24
Автор вопроса: Sacred Phoenix | ICQ: 304238252
Как сделать сабж? Например:
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal lParam1 As Long, ByVal lParam2 As Long, ByVal lParam3 As Long, ByVal lParam4 As Long) As Long
Private Sub Form_Load()
Call CallWindowProc(AddressOf MyCallback, 12, 34, 56, 78)
End Sub
'// Модуль
Public Function MyCallBack(ByVal lParam1 As Long, ByVal lParam2 As Long, ByVal lParam3 As Long, ByVal lParam4 As Long) As Long
Call Msgbox (lParam1 & ", " & lParam2 & ", " & lParam3 & ", " & lParam4)
End Function
Кульно, но я такой, что хочу передать массив параметров. Афаик, для передачи массива как раз и нужно 16 байт... Как быть?.. :)
Ответы
Всего ответов: 10
Номер ответа: 1
Автор ответа:
Серёга
ICQ: 262809473
Вопросов: 17
Ответов: 561
Web-сайт:
Профиль | | #1
Добавлено: 07.08.06 22:42
А какова конечная цель всех этих манипуляций?
(если не секрет ))
Номер ответа: 2
Автор ответа:
Sacred Phoenix
ICQ: 304238252
Вопросов: 52
Ответов: 927
Профиль | | #2
Добавлено: 07.08.06 23:42
чтоб знать, как такое мона делать... мож потом понадобится передавать больше аргументов, да и самому интересно))
Номер ответа: 3
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #3
Добавлено: 08.08.06 11:30
Либо набивай их в стек вручную (придется подучить асм или взять из примера), либо просто передавай указатель на массив или структуру. Второе, ИМХО, проще.
ЗЫ А если не секрет - зачем 16 байт для передачи массива?
Номер ответа: 4
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #4
Добавлено: 08.08.06 11:36
А это будет variant, содержащая массив...
Номер ответа: 5
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #5
Добавлено: 08.08.06 11:44
Хм... нах?
Вообще с передачей массивов у VB странность. Он не передает, собственно, указатель на структуру SAFEARRAY. Вместо этого он вызывает SafeArrayAccessData и дает указатель на элементы массива. Посему, ИМХО, проще все же вернуть указатель на структуру, содержащую массив.
Номер ответа: 6
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #6
Добавлено: 08.08.06 21:06
А тогда можно ParamArray на коленке смастерить для передачи в callback...
Номер ответа: 7
Автор ответа:
Sacred Phoenix
ICQ: 304238252
Вопросов: 52
Ответов: 927
Профиль | | #7
Добавлено: 08.08.06 21:41
я чё-то пробовал с ParamArray, успешно...
Номер ответа: 8
Автор ответа:
Sacred Phoenix
ICQ: 304238252
Вопросов: 52
Ответов: 927
Профиль | | #8
Добавлено: 08.08.06 21:42
...успешно выбросило из IDE
Номер ответа: 9
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #9
Добавлено: 09.08.06 12:04
Может у тебя VS SP3 не стоит? Была такая фича - если ParamArray пустой - :ass:
Вообще, я бы в подобной ситуации ParamArray использовал бы в последнюю очередь. Ну если бы уж совсем приспичило
Номер ответа: 10
Автор ответа:
AASoft
Вопросов: 86
Ответов: 920
Профиль | | #10
Добавлено: 12.08.06 02:14
v smysle SP6?