2011-10-04 4 views
1

Этот вопрос является продолжением предыдущего вопроса: Return an object in VBAVBA объектно-ориентированное программирование

Теперь я хотел бы знать, как объявить и инициализировать объект в VBA. Похоже, что я хотел бы сделать это так:

Declare Function ConnectMe Lib "C:\Windows\System32\cm.dll" (ByVal Arg1 As String) As ConnectMe 
Declare Function login Lib "C:\Windows\System32\cm.dll" (ByVal Arg1 As String, ByVal Arg2 As String) As Boolean 

Тогда ниже этой линии, я мог бы использовать этот код:

dim cm as new ConnectMe 

cm.ConnectMe("216.239.51.99") 

cm.login("username","password") 

Однако, когда я это делаю, это дает мне «User «Определенный тип не определен». Как я могу объявить этот класс C++ соответствующим образом, чтобы создать и использовать экземпляр в VBA?

Спасибо.

ответ

2

Этот код никогда не будет работать, как это. Если вы хотите создать класс на C++ под Windows и использовать его на любом другом языке программирования, который не является C++ (например, VB), «обычный» подход заключается в создании COM class или ActiveX control, если вам нужно рисовать графику.

Вы также можете найти this answer в SO helpful.

0

я здесь: D

Чтобы использовать этот код с использованием функции:

Dim cm as Object 

set cm = ConnectMe("parameter") 

if cm.login("username","password") then 
    msgbox "Connect!",vbinformation 
else 
    msgbox "not connect!",vbinformation 
end if 
+0

Но как объявить функцию доступной? Я думаю, что @yms верен, что мне нужно приблизиться к этому с совершенно другого ракурса. –

+0

Сэм посмотрим, что http://msdn.microsoft.com/en-us/library/bb687915.aspx на этой странице имеет тот же ответ. –

+0

Я нашел то, что, как я полагаю, вы имеете в виду: «[Public | Private] Объявить имя функции Lib« libname »[Alias« aliasname »] [([arglist])] [As type]« Однако, когда я пытаюсь указать класс «ConnectMe» с «Объявить функцию ConnectMe Lib» C: \ Windows \ System32 \ cm.dll »(ByVal Arg1 As String) Как ConnectMe« он жалуется на пользовательский тип. Какие-либо предложения? –

Смежные вопросы