在VC程序中調用服務組件

                                                            在VC程序中調用服務組件
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 程序,點擊“測試”按鈕,等待完成提示後,我們打開數據庫就可以看到剛纔添加的記錄了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章