VS2003.net ActiveX控件相關

今天在VC7上開發ActiveX控件,添加函數害的我掙了一下午,現在想想真是懷戀VC6的ClassWizard啊。在網上找了很多資料,也沒發現與此相關的,所以就記錄下來,僅供參考啊

創建ActiveX工程後,只能靠手動添加函數,這裏要注意四個地方都要修改,才能最終達到效果:
1、.h中:加入函數聲明
afx_msg short display(LPCTSTR lpszData); 
2、.cpp中加入函數映射

BEGIN_DISPATCH_MAP(CtestCtrl, COleControl) 
	DISP_FUNCTION_ID(CtestCtrl,"display",2223,display,VT_I2,VTS_BSTR) 
END_DISPATCH_MAP() 
在此處注意下:DISP_FUNCTION_ID的幾個參數:
I、該類的名稱
II、類中擴展名同後面的函數名一樣,只是多了雙引號
III、顯示的ID(儘量用大點的,一面和某些ID衝突)
IV、函數名
V、返回值類型:
VI、參數類型
VT_EMPTY = 0, 
VT_NULL = 1, 
VT_I2 = 2, 
VT_I4 = 3, 
VT_R4 = 4, 
VT_R8 = 5, 
VT_CY = 6, 
VT_DATE = 7, 
VT_BSTR = 8, 
VT_DISPATCH = 9, 
VT_ERROR = 10, 
VT_BOOL = 11, 
VT_VARIANT = 12, 
VT_UNKNOWN = 13, 
VT_DECIMAL = 14, 
VT_I1 = 16, 
VT_UI1 = 17, 
VT_UI2 = 18, 
VT_UI4 = 19, 
VT_I8 = 20, 
VT_UI8 = 21, 
VT_INT = 22, 
VT_UINT = 23, 
VT_VOID = 24, 
VT_HRESULT = 25, 
VT_PTR = 26, 
VT_SAFEARRAY = 27, 
VT_CARRAY = 28, 
VT_USERDEFINED = 29, 
VT_LPSTR = 30, 
VT_LPWSTR = 31, 
VT_FILETIME = 64, 
VT_BLOB = 65, 
VT_STREAM = 66, 
VT_STORAGE = 67, 
VT_STREAMED_OBJECT = 68, 
VT_STORED_OBJECT = 69, 
VT_BLOB_OBJECT = 70, 
VT_CF = 71, 
VT_CLSID = 72, 
VT_VECTOR = 0x1000, 
VT_ARRAY = 0x2000, 
VT_BYREF = 0x4000, 
VT_RESERVED = 0x8000, 
VT_ILLEGAL = 0xffff, 
VT_ILLEGALMASKED = 0xfff, 
VT_TYPEMASK = 0xfff 
VI、參數類型
3、CPP中加入函數實現:
short CtestCtrl::display(LPCTSTR lpszData) 
{ 
     AfxMessageBox(lpszData); 
} 
4、.idl 文件中還要加相關的接口調度說明
[id(2223)]short display(BSTR lpszData); 
這四個地方加好了就完工了~~




發佈了3 篇原創文章 · 獲贊 0 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章