當前位置:編程學習大全網 - 編程語言 - 在vc中怎樣調用vb做的ActiveX DLL控件

在vc中怎樣調用vb做的ActiveX DLL控件

1、運行VC 6.0,使用MFC程序向導創建壹個新的基於對話框的MFC應用程序。

2、使用#import導入服務組件,拷貝PRJADO.DLL到VC工程目錄,打開STDAFX.H文件增加如下代碼:

# import "prjado.dll"

using namespace prjado;

這段代碼應該放置在:

//{{AFX_INSERT_LOCATION}}

// Microsoft Visual C++ will insert additional declarations immediately 之後和#endif 之前。

在stdafx.h文件導入dll能夠讓編譯器在運行時連接dll的類型庫,#import它能夠自動產生壹個對GUIDs的定義,同時自動生成對clsado對象的封裝。同時能夠列舉它在類中所能找到的類型, VC++會在編譯的時候自動生成兩個文件:

壹個頭文件(.tlh),它包含了列舉的類型和對類型庫中對象的定義;

壹個實現文件(.tli)對類型庫對象模型中的方法產生封裝。

Namespace(名字空間)用來定義壹個名字空間,使用unsing就可以將當前的類型上下文轉換名字空間所定地,讓我們可以訪問服務組件的方法。

如果我們修改了服務組件程序,建議刪除這兩個文件後重新完整編譯工程,以便讓編譯器重新列舉類的屬性以及函數。

3、在對話框中新添加壹按鈕,標題設為“測試”。雙擊“測試”按鈕,系統提示新建壹函數OnButton1對應於該按鈕的CLICK事件。OnButton1函數的具體代碼如下

HRESULT hresult;

CLSID clsid;

CoInitialize(NULL);

//初始化COM接口

hresult=CLSIDFromProgID(OLESTR("prjado.clsado"), &clsid);

//得到組件的CLSID

_clsado *t;

//這就是我們在PRJADO.DLL中定義的類

hresult=CoCreateInstance(clsid,NULL,CLSCTX_INPROC_SERVER,__uuidof(_clsado),(LPVOID *) &t);

初始化CLSADO,CoCreateInstance()的第壹個參數是對象的CLSID(類代碼),這個128位的編碼唯壹地標識了組件服務,它的路徑和運行參數等信息都放在系統註冊表中;第二個參數壹般情況下設為NULL;第三個參數用來指明對象的運行環境,如遠程或本地,此處設為CLSCTX_INPROC_SERVER,標明是服務組件是壹個DLL;第四個參數指明用來與對象通信接口的ID,這也是壹個128位的編碼;第五個參數是用來接收對象的接口指針。

if(FAILED(hresult))

{

AfxMessageBox("初始化服務組件失敗");

return;

}

//如果初始化失敗,彈出提示對話框後退出程序

t->ado_Init() ;

//調用初始化函數

t->ado_add("從VC調用組件") ;

//調用增加記錄函數

t->ado_UnInit ();

//調用關閉連接函數

t->Release();

//釋放接口指針

CoUninitialize();

// 關閉COM庫的聯接

AfxMessageBox("調用服務組件完成");

保存工程後編譯運行VC 程序,點擊“測試”按鈕,等待完成提示後,我們打開數據庫就可以看到剛才添加的記錄了。

總結:

綜上所述,在實際的應用程序開發中,利用組件技術,我們可以進行VC和VB混合編程,充分地發揮開發工具的優勢,可以很好地加快軟件的開發進度,並且極大的改善程序的可維護性和可用性。

  • 上一篇:部編版壹年級上冊語文漢語拼音《ao ou iu》教案三篇
  • 下一篇:突然失業,妳是怎麽活下來的?
  • copyright 2024編程學習大全網