容易o(hù)cx控件制作方法
發(fā)表時(shí)間:2024-06-09 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]B/S系統(tǒng)中,客戶端javascript的執(zhí)行效率不高,運(yùn)算速度慢,很多時(shí)候不得不采用ocx控件來(lái)實(shí)現(xiàn)一些功能。將簡(jiǎn)單的ocx的控件的制作方法提供給大家,一個(gè)參考。打開(kāi)Microsoft Visual C++6.0,新建一個(gè)MFC ActiveX工程,如下圖:點(diǎn)擊確定,出現(xiàn)ActiveX Cont...
B/S系統(tǒng)中,客戶端javascript的執(zhí)行效率不高,運(yùn)算速度慢,很多時(shí)候不得不采用ocx控件來(lái)實(shí)現(xiàn)一些功能。將簡(jiǎn)單的ocx的控件的制作方法提供給大家,一個(gè)參考。
打開(kāi)Microsoft Visual C++6.0,新建一個(gè)MFC ActiveX工程,如下圖:

點(diǎn)擊確定,出現(xiàn)ActiveX ControlWizard,如下圖:


選擇NEXT出現(xiàn)下來(lái)界面
繼續(xù)選擇Next,創(chuàng)建工程HelloWorld:

在HelloWorldCtl.cpp中,修改如下地方:
// Dispatch and event IDs
public:
enum {
//{{AFX_DISP_ID(CHelloWorldCtrl)
// NOTE: ClassWizard will add and remove enumeration elements here.
// DO NOT EDIT what you see in these blocks of generated code !
dispidGetHello = 1L,
//}}AFX_DISP_ID
};
};
然后添加申明
BEGIN_DISPATCH_MAP(CHelloWorldCtrl, COleControl)
//{{AFX_DISPATCH_MAP(CHelloWorldCtrl)
DISP_FUNCTION(CHelloWorldCtrl,"GetHello",GetHello,VT_BSTR, VTS_BSTR)
//}}AFX_DISPATCH_MAP
END_DISPATCH_MAP()
接著添加成員
// Message maps
//{{AFX_MSG(CHelloWorldCtrl)
// NOTE - ClassWizard will add and remove member functions here.
// DO NOT EDIT what you see in these blocks of generated code !
afx_msg BSTR GetHello(LPCTSTR strBatchName);
//}}AFX_MSG
添加方法,這個(gè)方法返回"Hello World!"加上輸入?yún)?shù)strBatchName。
BSTR CHelloWorldCtrl::GetHello(LPCTSTR strBatchName)
{
CString aa = (CString)strBatchName ;
CString rtnstr = "Hello World!" + aa;
return rtnstr.AllocSysString();
}

最后在Build的Configration中選擇下圖方式,編譯完成,在Release文件夾下產(chǎn)生ocx.
接著就是測(cè)試了:
將ocx提取出來(lái),我采用Microsoft Control Pad來(lái)編輯,得到ocx控件的classid, 然后創(chuàng)建一個(gè)html頁(yè)面,寫(xiě)入javascrip腳本,調(diào)用ocx中的方法。 將編譯通過(guò)的release目錄的HelloWorld.ocx與Html存放在同一文件夾下,打開(kāi)html頁(yè)面,頁(yè)面將談出對(duì)話框,信息為"Hello World!-- AppleGreen".