Страница: 1 |
Страница: 1 |
Вопрос: C++ и VB6.0 ???
Добавлено: 27.04.08 18:29
Автор вопроса: Hunter
Помогите с такими вопросами ...
Как правильно обьявить функции, переменные с++ в visual basic ?
Вот например:
Код С++
В VB должно получится вот так ?
Код VB
Но, вся проблема в том, что нет такого типа как 'HANDLE' ;(
Тогда что делать то ?
Еще вопрос:
Обьявление в с++ (скажем, библиотека называется packet.dll)
Код С++
Код VB
"packet.dll" (AdapterObject as LPADAPTER)
??? правильно ли, или напутал чего ???
Еще пример:
Код с++
Код VB:
Если все верно, тогда как задекларировать это:
Код на С++
???
Так, теперь вопрос по структурам ...
Как перевести это на VB (Не в давайтесь в подробности - мне главное синтаксис):
· OVERLAPPED OverLapped – структура, описанная в DDK Windows, используется для поддержки синхронных вызовов драйвера
· PVOID Buffer – указатель на буфер, содержащий пакет;
· UINT Length – размер буфера;
· PVOID Next – указатель на следующий пакет;
· UINT ulBytesReceived – размер части буфера, содержащей «верные» данные;
· BOOLEAN bIoComplete – показывает, содержит ли буфер «верные» данные после асинхронного вызова.
???
И последняя просьба - как это будет на VB ???:
Код С++
struct bpf_program {
UINT bf_len;
struct bpf_insn *bf_insns;
};
p.s да и еще - как создать свой тип данных в VB (ну, например, как в С++ USHORT ???)
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #1
Добавлено: 27.04.08 21:55
"В языке C особенно при работе с объектами Windows, широко используется тип Handle - задающий описатели объектов. <...> При трансляции описателей в тип языка VBA ему ставится в соответствие тип Long." http://www.citforum.ru/programming/vb/vba_winapi/3.shtml
Номер ответа: 2
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #2
Добавлено: 27.04.08 22:09
функция PacketSetMaxLookaheadsize должна быть соответственно As Boolean.
так из int можно получить uint
' Converts an unsigned integer to a long integer.
Public Function UIntToLong(ByVal Value As Integer) As Long
If Value >= 0 Then UIntToLong = Value Else UIntToLong = &HFFFF& - Not Value
End Function
Номер ответа: 3
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #3
Добавлено: 27.04.08 22:19
Видимо типа того. Только вот интересно, fp со звездочкой надо ByRef передавать или ByVal?
Type bpf_program
bf_len As Long 'от 0 до 65535
bf_insns As bpf_insn
End Type
Type bpf_insn
... As ...
... As ...
..........
End Type
Public Declare Function PacketSetBpf Lib "packet.dll" (ByVal AdapterObject As LPADAPTER, fp As bpf_program) As Boolean
Номер ответа: 4
Автор ответа:
Ra$cal
ICQ: 8068014
Вопросов: 18
Ответов: 817
Web-сайт:
Профиль | | #4
Добавлено: 28.04.08 20:05
типы с префиксом LP по сути есть переопределенные указатели, или LPTYPE в большинстве случаев эквивалентно *TYPE.
все что в си передается по указателю(*) или по ссылке(& в бейсике нада передавать через byref
Номер ответа: 5
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #5
Добавлено: 28.04.08 20:13
передача массивов меня просто убивает! ох устал с ними разбираться..
Номер ответа: 6
Автор ответа:
Hunter
Вопросов: 23
Ответов: 71
Профиль | | #6
Добавлено: 29.04.08 08:10
Огромное СПАСИБО ... надеюсь разберусь я с этим WinPcap Эх, почему ж исходников на VB нету ((((