• 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>

    完结!

  • 相关阅读:
    ThinkPHP5.0框架开发--第6章 TP5.0 请求和响应
    ThinkPHP5.0框架开发实现简单的页面跳转
    ThinkPHP5.0框架开发--第5章 TP5.0 控制器
    ThinkPHP5.0框架开发--第4章 TP5.0路由
    ThinkPHP5.0框架开发--第3章 TP5.0 配置
    ThinkPHP5.0框架开发--第2章 TP5.0架构
    ThinkPHP5.0框架开发--第1章 Tp5.0安装
    ThinkPHP新建控制器
    ThinkPHP5.0最最最最最简单实例
    白话经典算法系列之七 堆与堆排序
  • 原文地址:https://www.cnblogs.com/shiyixirui/p/15397248.html
Copyright © 2020-2023  润新知