B/S系统中,客户端javascript的执行效率不高,运算速度慢,很多时候不得不采用ocx控件来实现一些功能。将简单的ocx的控件的制作方法提供给大家,一个参考。 打开Microsoft Visual C++6.0,新建一个MFC ActiveX工程,如下图:
点击确定,出现ActiveX ControlWizard,如下图:
选择NEXT出现下来界面 继续选择Next,创建工程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 添加方法,这个方法返回"Hello World!"加上输入参数strBatchName。 BSTR CHelloWorldCtrl::GetHello(LPCTSTR strBatchName) { CString aa = (CString)strBatchName ; CString rtnstr = "Hello World!" + aa; return rtnstr.AllocSysString(); }
最后在Build的Configration中选择下图方式,编译完成,在Release文件夹下产生ocx. 接着就是测试了: 将ocx提取出来,我采用Microsoft Control Pad来编辑,得到ocx控件的classid, 然后创建一个html页面,写入javascrip脚本,调用ocx中的方法。 将编译通过的release目录的HelloWorld.ocx与Html存放在同一文件夹下,打开html页面,页面将谈出对话框,信息为"Hello World!-- AppleGreen".
|