1、OCX是典型的ActiveX控件,常見的OCX控件有很多,IE瀏覽器、Word、Excel等都提供各種各樣的OCX控件。
2、OCX控件的優點是可以在其他應用程序中嵌入使用。OCX控件做為插件、外掛式的應用非常靈活方便。
3、一般用的比較多的是做為視頻、圖片、圖表等顯示區域控件。最近碰到幾個按鈕的功能要封裝成OCX控件,供其它程序使用。網上大概搜索了下,資料不多,於是自己寫了下來,以供查找。
1、打開VC6.0,創建MFC ActiveX項目,工程名稱:OcxDemo。
2、按照向導步驟操作,點擊“完成”創建項目成功。
3、在OcxDemoCtrl.h文件中定義“增加”按鈕。
//按鈕IDC #define IDC_BUTTON_ADD 0x2001 //"增加"按鈕
private: //"增加"按鈕 CButton m_BtnAdd;
4、增加自繪“增加”按鈕方法。
5、在OcxDemoCtrl.cpp新生成的CreateBtnAdd方法中添加創建按鈕相關代碼。
m_BtnAdd.Create(_T("Add"), WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON, CRect(10,10,60,30), this, IDC_BUTTON_ADD);
6、對“增加”按鈕,增加響應事件。
//OcxDemoCtrl.h private: //"增加"按鈕 CButton m_BtnAdd; //"增加"按鈕單擊響應 void OnButtonAdd();
//OcxDemoCtrl.cpp BEGIN_MESSAGE_MAP(CActiveXDemoCtrl, COleControl) //{{AFX_MSG_MAP(CActiveXDemoCtrl) // NOTE - ClassWizard will add and remove message map entries // DO NOT EDIT what you see in these blocks of generated code ! ON_BN_CLICKED(IDC_BUTTON_ADD, OnButtonAdd) //}}AFX_MSG_MAP ON_OLEVERB(AFX_IDS_VERB_PROPERTIES, OnProperties) END_MESSAGE_MAP() void COcxDemoCtrl::OnButtonAdd() { MessageBox("增加"); }
7、刪除OnDraw中代碼。
//pdc->FillRect(rcBounds, CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH))); //pdc->Ellipse(rcBounds);
8、編譯生成OcxDemo.ocx。
9、源碼:OcxDemo.rar
1、打開ActiveX Control Test Container工具,插入OcxDemo.ocx。
2、Invoke:CreateBtnAdd方法。
3、測試CreateBtnAdd方法,成功。
1、打開VC6.0,創建MFC AppWizard[exe]對話框項目,工程名稱:OcxTestDemo。
2、插入OcxTestDemo.ocx到控件面板。
3、對控件添加關聯成員變量:m_OcxDemoCtrl。
4、BOOL COcxTestDemoDlg::OnInitDialog()添加自繪“增加”按鈕方法。
m_OcxDemoCtrl.CreateBtnAdd();
5、編譯生成OcxTestDemo.exe,查看調用OcxDemo.oxc效果。
6、源碼:OcxTestDemo.rar