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>

 

 

 

 

 

完結!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM