Страница: 1 |
Просто захотелось проверить кто знает три VB-шных функции: ObjPtr, StrPtr и VarPtr. Которые являются указателями(pointer) на адрес памяти: ObjPtr - Объекта StrPtr - Строчной VarPtr - Числовой переменных. Пример: В API-шных ф-ях бывает когда нужно передать параметром не саму переменную, а адрес на неё. Возьмём к примеру тип: typedef struct { // cc DWORD lStructSize; HWND hwndOwner; HWND hInstance; COLORREF rgbResult; COLORREF* lpCustColors; DWORD Flags; LPARAM lCustData; LPCCHOOKPROC lpfnHook; LPCTSTR lpTemplateName; } CHOOSECOLOR; А если по русски (на VB): Type CHOOSECOLOR lStructSize As Long hwndOwner As Long hInstance As Long rgbResult As Long lpCustColors As Long flags As Long lCustData As Long lpfnHook As Long lpTemplateName As String End Type Здесь "COLORREF* lpCustColors" - указатель на адрес. Подозреваю что знак "*" в Си++ этим и является. Но на Си++ это делается так: Dim HandleToMemory As Long, PointerToMemory As Long, CustomColors(15) as Long Dim cc As CHOOSECOLOR HandleToMemory = GlobalAlloc(GMEM_MOVEABLE Or GMEM_ZEROINIT, 64) PointerToMemory = GlobalLock(HandleToMemory) ' 16 элементов по 4 байта CopyMemory ByVal PointerToMemory, CustomColors(0), 64 cc.lpCustColors = PointerToMemory На VB же это решается гораздо проще: cc.lpCustColors = VarPtr(CustomColors(0))
Кстати, неплохо было бы их добавить в раздел "Справочник по VB" этого сайта. Чё, внатуре никто не знает? Дело в том что это недокументированные функции. Но раз они VB-шные, то знать их всё равно надо. Страница: 1 |
Вопрос: Всем: Небольшой опрос
Добавлено: 04.08.03 04:30
Автор вопроса: CyRax | Web-сайт:
Ответы
Всего ответов: 3
Номер ответа: 1
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #1
Добавлено: 04.08.03 04:52
Номер ответа: 2
Автор ответа:
shuffle
Администратор
ICQ: 201502381
Вопросов: 15
Ответов: 737
Профиль | | #2
Добавлено: 04.08.03 14:52
Я думаю многие эти ф-ции знают, кто с API работал....
Номер ответа: 3
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #3
Добавлено: 05.08.03 04:19