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混合編程,充分地發揮開發工具的優勢,可以很好地加快軟件的開發進度,並且極大的改善程序的可維護性和可用性。