ActiveX控件是微軟進(jìn)軍internet的有利武器,市場(chǎng)上形形色色的ActiveX控件也真正地帶給了人們便利,下面我簡(jiǎn)單總結(jié)一下MFC開(kāi)發(fā)ActiveX控件的方法。如需要代碼者請(qǐng)留下聯(lián)系方式。
一、在MFC項(xiàng)利用程序向?qū)苫镜某绦蚩蚣堋?br />二、修改一下資源試圖里的位圖,那就是你發(fā)布后的控件圖標(biāo),一定要整的漂亮點(diǎn)。
三、在控件接口下面加入庫(kù)存屬性,就是顏色,標(biāo)題,字體一類(lèi)的屬性,向?qū)ё詣?dòng)添加如下屬性入口???
??????????????? BEGIN_DISPATCH_MAP,
??????????????? DISP_STOCKPROP_CAPTION()
??????????????? DISP_STOCKPROP_FONT()
??????????????? DISP_STOCKPROP_FORECOLOR()
??????????????? END_DISPATCH_MAP()
????? 這些屬性只能通過(guò)PUT_屬性名()和GET_屬性名()進(jìn)行修改。庫(kù)存屬性的值由COloControl來(lái)維護(hù),例如設(shè)置背景顏色之后,COloControl調(diào)用SetBackColor()自動(dòng)調(diào)用OnBackColorChanged()函數(shù)是控件無(wú)效從而導(dǎo)致重繪
四、添加你的功能函數(shù)。
五、添加你得自定義屬性。ActiveX控件支持四種自定義屬性
???????? DISP_PROPERTY.? DISP_PPOPERTY_NOTIFY???? DISP_PROPERTY_EX???? DISP_[ROPERTY_PARAM
???????? 注意:添加自定義屬性要在控件的實(shí)現(xiàn)類(lèi)下,而不是在控件的接口下面。如果你的自定義屬性是一個(gè)BOOL 型的應(yīng)和DISP_PPOPERTY_NOTIFY? 對(duì)應(yīng) 。
????? 以下是我的自定義屬性舉例
????? DISP_PROPERTY_NOTIFY_ID?? (CMfcCirCtrlCtrl,"CircleShape",dispidCircleShape,? m_CircleShape, OnCircleShapeChanged, VT_BOOL)
?DISP_PROPERTY_EX_ID(CMfcCirCtrlCtrl, "CircleOffset", dispidCircleOffset, GetCircleOffset, SetCircleOffset, VT_I2)
六、添加事件,這一步也是在控件的實(shí)現(xiàn)類(lèi)下面完成,記住VC.NET中的內(nèi)部名稱(chēng)不同于VC6中的,.NET中的內(nèi)部名稱(chēng)和事件名相同,例如你添加一個(gè)ClickIn的事件,VC.NET中的內(nèi)部事件也是ClickIn,而在 VC6中會(huì)是Fire_CickIn.
?? 向?qū)ё魅缦绿砑樱?br />?? BEGIN_EVENT_MAP(CMfcCirCtrlCtrl, COleControl)
??? EVENT_CUSTOM_ID("ClickIn", eventidClickIn, ClickIn, VTS_XPOS_PIXELS VTS_YPOS_PIXELS)
?? END_EVENT_MAP()
?? 并在頭文件中添加如下代碼
?? void ClickIn(OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y)
??? {
??????? FireEvent(eventidClickIn, EVENT_PARAM(VTS_XPOS_PIXELS VTS_YPOS_PIXELS), x, y);
??? }
七、實(shí)現(xiàn)屬性表。庫(kù)存屬性在VC6會(huì)自動(dòng)做添加下面一行:
?????? PROPPAGEID(CLSID_CColorPropPage)
?????? 而在VC.NET中部添加上面那行,只有默認(rèn)的屬性表。
?
以上是我在學(xué)習(xí)過(guò)程中的一點(diǎn)總結(jié),本人有相應(yīng)的全部代碼,如有需要者請(qǐng)留下聯(lián)系方式,我會(huì)發(fā)給你們的。
??