ActiveX控件是微軟進軍internet的有利武器,市場上形形色色的ActiveX控件也真正地帶給了人們便利,下面我簡單總結一下MFC開發ActiveX控件的方法。如需要代碼者請留下聯系方式。
一、在MFC項利用程序向導生成基本的程序框架。
二、修改一下資源試圖里的位圖,那就是你發布后的控件圖標,一定要整的漂亮點。
三、在控件接口下面加入庫存屬性,就是顏色,標題,字體一類的屬性,向導自動添加如下屬性入口????
????????????????BEGIN_DISPATCH_MAP,?
????????????????
DISP_STOCKPROP_CAPTION()
????????????????DISP_STOCKPROP_FONT()
????????????????DISP_STOCKPROP_FORECOLOR()
????????????????END_DISPATCH_MAP()
??????這些屬性只能通過PUT_屬性名()和GET_屬性名()進行修改。庫存屬性的值由COloControl來維護,例如設置背景顏色之后,COloControl調用SetBackColor()自動調用OnBackColorChanged()函數是控件無效從而導致重繪
四、添加你的功能函數。
五、添加你得自定義屬性。ActiveX控件支持四種自定義屬性
???????
??DISP_PROPERTY.? DISP_PPOPERTY_NOTIFY???? DISP_PROPERTY_EX???? DISP_[ROPERTY_PARAM
???????? 注意:添加自定義屬性要在控件的實現類下,而不是在控件的接口下面。如果你的自定義屬性是一個BOOL 型的應和
DISP_PPOPERTY_NOTIFY??對應?。
?????
?以下是我的自定義屬性舉例
?????
?DISP_PROPERTY_NOTIFY_ID???(CMfcCirCtrlCtrl,"CircleShape",dispidCircleShape,??m_CircleShape,?OnCircleShapeChanged, VT_BOOL)
?DISP_PROPERTY_EX_ID(CMfcCirCtrlCtrl, "CircleOffset", dispidCircleOffset, GetCircleOffset, SetCircleOffset, VT_I2)
六、添加事件,這一步也是在控件的實現類下面完成,記住VC.NET中的內部名稱不同于VC6中的,.NET中的內部名稱和事件名相同,例如你添加一個ClickIn的事件,VC.NET中的內部事件也是ClickIn,而在 VC6中會是Fire_CickIn.
???向導作如下添加:
???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);
????}
七、實現屬性表。庫存屬性在VC6會自動做添加下面一行:
?????? PROPPAGEID(CLSID_CColorPropPage)
???????而在VC.NET中部添加上面那行,只有默認的屬性表。?
以上是我在學習過程中的一點總結,本人有相應的全部代碼,如有需要者請留下聯系方式,我會發給你們的。
???