vs2010开发activex(MFC)控件/ie插件(一)

 参考:https://blog.csdn.net/xiatiancc/article/details/79485195

           http://www.javashuo.com/article/p-kmrytgcd-hv.html

注册时出错说系统不兼容,用

regsvr32 /s "D:\SHIYAN\ATL\Test_js\Debug\Test_js.ocx

没有s则提示不兼容。

也不知道s啥意思

vs2010开发activex(MFC)控件/ie插件(一)

       vs2010开发activex(MFC)控件:

     第一步:生成activex控件

    

     第二步:添加对话框资源及其他控件,添加对话框类,设置对话框属性

     

第三步:

    

添加WM_CREATE事件,选择”<添加>OnCreate”,以初始化对话框对象。


int CTest_jsCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (COleControl::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO:  在此添加您专用的创建代码
m_MyDlg.Create(IDD_DIALOG1,this);  //初始化对话框
return 0;
}

OnDraw函数中添加绘制对话框的代码

// CTest_jsCtrl::OnDraw - 绘图函数
void CTest_jsCtrl::OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid){
if (!pdc)
return;
// TODO: 用您自己的绘图代码替换下面的代码。
//pdc->FillRect(rcBounds, CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH)));
//pdc->Ellipse(rcBounds);
m_MyDlg.MoveWindow(rcBounds,true);
}

 

 

 

 

   编译,生成ocx,编写测试的html文件:

   html中加载ocx控件的方法:

<BODY>
<OBJECT ID="Test_js" WIDTH=50% HEIGHT=35% 
 CLASSID="CLSID:80F40FB1-7366-4D8E-B2E9-B765E6740F98">
    <PARAM NAME="_Version" VALUE="65536">
    <PARAM NAME="_ExtentX" VALUE="2646">
    <PARAM NAME="_ExtentY" VALUE="1323">
    <PARAM NAME="_StockProps" VALUE="0">
</OBJECT>

上述中的CLASSID:

 

    完整的html测试文件:

   

 
  1. <HTML>

  2. <HEAD>

  3. <TITLE>测试:js传参数给ie插件</TITLE>

  4. <meta http-equiv="Content-Type" content="text/html; charset=GBK" />

  5. <SCRIPT LANGUAGE="JavaScript">

  6. function GetDeviceinfo()

  7. {

  8. if (Input1.value!="")

  9. {

  10. Test_js.paramer1= Input1.value;

  11. }

  12. //alert(Test_js.paramer1);

  13. if (Input2.value!="")

  14. {

  15. Test_js.paramer2= Input2.value;

  16. }

  17. if (Input3.value!="")

  18. {

  19. Test_js.paramer3= Input3.value;

  20. }

  21. if (Input4.value!="")

  22. {

  23. Test_js.paramer4= Input4.value;

  24. }

  25. }

  26. function Test()

  27. {

  28.  
  29. var p1=Test_js.paramer3;

  30. var p2=Test_js.paramer4;

  31. var a=Test_js.add(p1,p2)

  32. alert(a);

  33. }

  34.  
  35. </SCRIPT>

  36. </HEAD>

  37. <BODY>

  38. <OBJECT ID="Test_js" WIDTH=50% HEIGHT=35%

  39. CLASSID="CLSID:80F40FB1-7366-4D8E-B2E9-B765E6740F98">

  40. <PARAM NAME="_Version" VALUE="65536">

  41. <PARAM NAME="_ExtentX" VALUE="2646">

  42. <PARAM NAME="_ExtentY" VALUE="1323">

  43. <PARAM NAME="_StockProps" VALUE="0">

  44. </OBJECT>

  45. <p></p>

  46. Inputparamer1: <INPUT TYPE ="text" NAME="Input1" VALUE="">

  47. Inputparamer2: <INPUT TYPE ="text" NAME="Input2" VALUE="">

  48. Inputparamer3: <INPUT TYPE ="text" NAME="Input3" VALUE="">

  49. Inputparamer4: <INPUT TYPE ="text" NAME="Input4" VALUE="">

  50. <p></p>

  51. <INPUT TYPE="button" NAME="输入数据"

  52. VALUE="测试js传参数: " ONCLICK=GetDeviceinfo()>

  53. <INPUT TYPE="button" NAME="测试"

  54. VALUE="测试js调用activex接口函数: " ONCLICK=Test()>

  55. </BODY>

  56. </HTML>

注意:对话框上的控件及处理,跟普通对话框一样不再说明。

测试结果: