MFC 調用VB dll

  

首先來說說VB調用VB生成的DLL

1. 打開VB 程序,File > New Project

2. 在New Project的對話框中選擇 ActiveX DLL 圖標,VB會自動添加一個Class,名字爲Class1

3. 在Project Window(不是菜單欄)選中這個Class1,然後在Properties Window下,雙擊 Name,然後修改爲VBDll,表示我們將要生成的是VBDLL的Class

4. 在Project Window(不是菜單欄)選中Project1,然後在Properties Window下,雙擊 Name,然後修改爲DLLProject

5. 保存文件和項目,生成兩個文件VBDll.cls 和 DLLProject.vbp。

6. 在VBDLL.cls裏面寫下如下的代碼

Public Function fun1() As String

    fun1 = "Congratulations! This is your first VB ActiveX DLL!"

End Function

Public Sub fun2()

  MsgBox “Hello!”

End Sub

7. 保存VBDLL.cls,然後File > Make DLLProject.dll, 經過Compile之後生成以Project的名字命名的DLL,爲DLLProject.dll和 DLLProject.lib 兩個文件

8. 關閉上面的DLLProject,然後File > New Project > 選擇 Standard EXE

9. VB首先要引用前面建立的DLLProject.dll

Project菜單欄 > References > 添加前面建立的 DLLProject.dll,然後添加如下的代碼:

Option Explicit

Private Sub Form_Load()

    Dim testdll As VBDLL

    Set testdll = New VBDLL 'DLL的一個新實例

    MsgBox testdll.fun1

End Sub

              Rem 此時引用的是DLLProject.dll 但是Class是VBDLL。

注:爲什麼不可以像前面VB調用VC生成的的DLL那樣,用 Declare 來引用呢?因爲VB生成的DLL不是標準的DLL,所以只能從Project>Reference來引用。

 

 

    再說說VC來調用VB生成的DLL

 在MFC中有一種方便的方法,就是通過ClassWizard利用類型庫生成包裝類,不過有個前提就是com組件的接口必須是派生自IDispatch  
  具體方法:  
  按Ctrl+W調出類嚮導,按Add   Class按鈕彈出新菜單,選From   a   type   libarary,然後定位到DLLProject.dll,接下來會出現該DLLProject.dll中的所有接口,選擇你成的接口包裝類_VBDll後,嚮導會自動生成相應的.cpp和.h文件.   這樣你就可以在你的MFC工程中像使用普通類那樣使用COM組件了.
  

void CMainFrame::OnMKitHelp()
{
 // TODO: Add your command handler code here
 
 _VBDll VbClass;

CoInitialize(NULL);  
 
 if   (VbClass.CreateDispatch("DLLProject.VBDll")   !=   0)  
 {  
   VbClass.fun2();  
  VbClass.ReleaseDispatch(); 
  
 }   
  
 CoUninitialize(); 
 return ;

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章