zoukankan      html  css  js  c++  java
  • VS2019 开发 MFC ACtivex (OCX)控件

    需求:

    js调用ocx方法,传递字符串到ocx控件中显示

    操作步骤:

    一、新建 ocx 项目

    二、填写项目信息

    三、完成项目创建

    四、修改项目属性

    打开  项目属性  ->  链接器  ->  常规  ->  逐用户重定义  改为  是

     

    五、打开资源视图,创建 dialog

    六、修改 dialog 属性

    边框 改为  None

    样式 改为 child

    可见 改为 True    (*:必须设置成可见,不然网页中看不见这个窗口)

    七、添加一个  edit 控件,用来和网页做交互

    八、双击 dialog,添加类文件,基类(CDialog)

    九、给新建的 test 类添加一个方法,用来和网页交互,网页传递数据过来,ocx进行显示

    test.h

    public:
        long myShow(BSTR text);

    test.cpp

    long Test::myShow(BSTR text)
    {
        SetDlgItemText(IDC_EDIT1, text);
        return 0;
    }

    十、在类视图中,打开类向导,添加  create 消息,双击添加到现有处理程序,确认

     

    十一、操作 MyOCXCtrl 类

    MyOCXCtrl.h

    #include "Test.h"
    
    public:
        Test tt;

    MyOCXCtrl.cpp

    // CMyOCXCtrl::OnDraw - 绘图函数
    void CMyOCXCtrl::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);
        tt.MoveWindow(rcBounds, TRUE);
    }
    int CMyOCXCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
        if (COleControl::OnCreate(lpCreateStruct) == -1)
            return -1;
    
        // TODO:  在此添加您专用的创建代码
        tt.Create(IDD_DIALOG1, this);
        return 0;
    }

    十二、在类视图中,添加一个方法,给网页调用

    十三、在 MyOCXCtrl 类中完善添加的方法

    MyOCXCtrl.cpp

    LONG CMyOCXCtrl::addEditText(BSTR text)
    {
        AFX_MANAGE_STATE(AfxGetStaticModuleState());
    
        // TODO: 在此处添加分派处理程序代码
        tt.myShow(text);
        return 0;
    }

    十四、生成,然后注册ocx

    reg.bat

    cd /d %~dp0
    regsvr32 ./xxx.ocx

    十五、编写 HTML 进行测试

    classID  是  MyOCX.idl 文件中 最后一个 uuid  (CMyOCXCtrl 的类信息)

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <object id="Test" classid="CLSID:d75dee6b-c9a5-4bcb-9644-ce39c033a228" width="400" height="300">123</object>
        <button onclick="test()">test</button>
        <script>
            function test(){
                Test.addEditText("hahaha")
            }
        </script>
    </body>
    </html>

    完结!

  • 相关阅读:
    1-5概率的公理化的定义
    1-4几何概型
    1-3古典概型
    求逆序对数量
    1-2事件的基本运算
    1001 害死人不偿命的(3n+1)猜想 (15 分)
    北京周末去哪儿 —— 国家博物馆
    北京周末去哪儿 —— 天安门广场
    angular中使用ckplayer播放器
    java MD5/AES/DES加解密汇总
  • 原文地址:https://www.cnblogs.com/shiyixirui/p/15397248.html
Copyright © 2011-2022 走看看