Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 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-сайт: houselab.narod.ru
 Профиль | | #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
Может у тебя VS SP3 не стоит

v smysle SP6?

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам