Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Всем: Небольшой опрос Добавлено: 04.08.03 04:30  

Автор вопроса:  CyRax  | Web-сайт: basicproduction.nm.ru | ICQ: 204447456 

Просто захотелось проверить кто знает три 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))

Ответить

  Ответы Всего ответов: 3  

Номер ответа: 1
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #1
Добавлено: 04.08.03 04:52

Кстати, неплохо было бы их добавить в раздел "Справочник по VB" этого сайта.

Ответить

Номер ответа: 2
Автор ответа:
 shuffle



Администратор

ICQ: 201502381 

Вопросов: 15
Ответов: 737
 Профиль | | #2 Добавлено: 04.08.03 14:52
Я думаю многие эти ф-ции знают, кто с API работал....

Ответить

Номер ответа: 3
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #3
Добавлено: 05.08.03 04:19

Чё, внатуре никто не знает?

Дело в том что это недокументированные функции.

Но раз они VB-шные, то знать их всё равно надо.

Ответить

Страница: 1 |

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



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