ocx

ocx_百度百科

百度百科 網(wǎng)頁新聞貼吧知道網(wǎng)盤圖片視頻地圖文庫資訊采購百科百度首頁登錄注冊進入詞條全站搜索幫助首頁秒懂百科特色百科知識專題加入百科百科團隊權(quán)威合作下載百科APP個人中心收藏查看我的收藏0有用+10ocx播報討論上傳視頻對象類別擴充組件OCX 是對象類別擴充組件(Object Linking and Embedding (OLE) Control Extension);是可執(zhí)行的文件的一種,但不可直接被執(zhí)行; 是 ocx 控件的擴展名,與 .exe、.dll 同屬于PE文件。如果你用過 Visual Basic 或者 Delphi 一類的可視化編程工具,那么對控件這個概念一定不會陌生,就是那些工具條上的小按鈕,如 EditBox,Grid,ImageBox,Timer 等等。每個控件都有自己的事件、方法和屬性。使用了控件的編程非常容易。在程序的設(shè)計階段可以設(shè)置一些屬性,如大小,位置,標題(caption)等等,在程序運行階段,可以更改這些屬性,還可以針對不同的事件,調(diào)用不同的方法來實現(xiàn)對該控件的控制??丶秃孟褚粔K塊的積木,程序要做的事只是將這些積木搭起來。控件的最大好處是可以重復(fù)使用,甚至可以在不同的編程語言之間使用,例如,你可以在 VB 中嵌入用 VC 開發(fā)的控件。外文名Object Linking and Embedding (OLE) Control eXtension別????名Object Linking and Embedding Control eXtension平????臺ocx 控件縮????寫ocx目錄1詳細信息2注冊方式3可能問題詳細信息播報編輯控件的本質(zhì)是微軟公司的對象鏈接和嵌入(OLE)標準。由于它充分利用了面向?qū)ο蟮膬?yōu)點,使得程序效率得到了很大的提高,從而得到了廣泛的應(yīng)用。國外有很多公司就是專門制作各種各樣控件的??丶淖钤缧问绞且?VBX的格式出現(xiàn)的,后來變成了.OCX。由于Internet的廣泛流行,微軟公司推出了ActiveX技術(shù),就是從OLE發(fā)展起來的,加入了WWW上的功能。所以最流行的是ActiveX控件。ActiveX控件.ActiveX控件是可重用的軟件組件。使用它可以很快地在網(wǎng)絡(luò)應(yīng)用程序、桌面應(yīng)用程序、以及開發(fā)工具中加入特殊的功能。ActiveX控件的使用者可以無需知道這些組件是如何開發(fā)的,便可以完成網(wǎng)頁或應(yīng)用程序的設(shè)計。對象鏈接和嵌入用戶控件(OCX)是一種可以由在微軟的Windows系統(tǒng)中運行的應(yīng)用軟件創(chuàng)建使用的特殊用途的程序。OCX提供操作滾動條移動和視窗恢復(fù)尺寸的功能。如果你有Windows系統(tǒng),你會發(fā)現(xiàn)在你的Windows地址錄里有大量OCX文件名后綴的文件。 對象鏈接和嵌入(OLE)被設(shè)計來支持混合文檔(包含多種資料類型,比如文本、繪畫圖像、聲音、動畫)。Windows桌面就是一個混合文檔的范例,微軟使用OLE來建立的。OLE和組件對象模型(COM繼OLE后的更常用的概念)支持“即插即用”程序的發(fā)展,“即插即用”程序在系統(tǒng)中可以用任何語言寫入并可以由任何應(yīng)用程序動態(tài)地使用。這些程序被認為是他們在其上運行的container的組件和應(yīng)用程序。這種基于組件的近似應(yīng)用程序的發(fā)展縮減了程序調(diào)試時間并改善了程序的性能和品質(zhì)。Windows應(yīng)用發(fā)展程序(比如powerbuilder和Microsoft Access)具有OCX的優(yōu)勢。注冊方式播報編輯ocx控件的安裝方式有很多種,這里介紹最簡單的一種。步驟:1.進入開始,點擊運行。2.在出現(xiàn)的框中鍵入regsvr32 C:\xxxx.ocx 。(XXXX為控件名, C:\為目錄)(regsvr32E:\控件的制作\myOcxTest\Debug\myOcxTest.ocx)3.點擊確認后等待出現(xiàn)提醒注冊成功即可。oca 文件Oca文件不是控件,其中保存Ocx控件的屬性ocx的注銷1.進入開始,點擊運行。2.在出現(xiàn)的框中鍵入regsvr32 /u C:\xxxx.ocx 。(XXXX為控件名, C:\為目錄)(regsvr32 /u E:\控件的制作\myOcxTest\Debug\myOcxTest.ocx)3.點擊確認后等待出現(xiàn)提醒注銷成功即可。可能問題播報編輯同一個OCX的多個控件在同一窗體上會出現(xiàn)可能的問題,主要原因是不能有全局變量(或共享數(shù)據(jù)) ,應(yīng)該盡量定義成類的成員變量,全局變量在同一個進程中要被共享的。新手上路成長任務(wù)編輯入門編輯規(guī)則本人編輯我有疑問內(nèi)容質(zhì)疑在線客服官方貼吧意見反饋投訴建議舉報不良信息未通過詞條申訴投訴侵權(quán)信息封禁查詢與解封?2024?Baidu?使用百度前必讀?|?百科協(xié)議?|?隱私政策?|?百度百科合作平臺?|?京ICP證030173號?京公網(wǎng)安備110000020000

ocx入門淺析-CSDN博客

>

ocx入門淺析-CSDN博客

ocx入門淺析

最新推薦文章于?2023-12-07 15:02:34?發(fā)布

kevin--你不知道的事

最新推薦文章于?2023-12-07 15:02:34?發(fā)布

閱讀量4.1w

收藏

71

點贊數(shù)

12

文章標簽:

ocx

版權(quán)聲明:本文為博主原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接和本聲明。

本文鏈接:https://blog.csdn.net/wangkui1331/article/details/53763990

版權(quán)

1.exe,ocx,dll的區(qū)別

分析:exe是一個可執(zhí)行程序,而ocx看做是一個窗口上的控件(控件即ocx,如button),dll是將函數(shù)、變量、類封裝在一起的庫

ocx的形式如下:

圖中的各個都是ocx控件(我是這樣認為的),只不過MFC內(nèi)置了一些控件,但是如果是自己寫的ocx控件,程序運行時必須將生成的ocx控件拷到可執(zhí)行目錄下

2.ocx特點(根據(jù)普通的button可知)

(1)ocx是可視化窗口,一個ocx有一個ID,可以通過ID來建立一個對應(yīng)的類,調(diào)用其中函數(shù)(如果看不到,那么肯定隱藏了)

(2)可以響應(yīng)單擊、雙擊等鼠標事件

(3)含有對應(yīng)的屬性

3.創(chuàng)建一個ocx程序(如何讓ocx含有上面這些屬性呢)

(1)利用VS2010創(chuàng)建一個MFC ActiveX Control工程,名為myocx

其中myocx.h中InitInstance是入口,.cpp中含有ocx注冊、反注冊的函數(shù)

myocxCtrl.h中CmyocxCtrl是ocx的可視化窗口類,父類是COleControl,因為是窗口,所以可以響應(yīng)OnCreate,Onsize等消息,含有消息映射,調(diào)度映射,事件映射

myocxPropPage.h是ocx的屬性,就像按鈕button類含有屬性一樣

myocx.idl是對外接口,據(jù)說CmyocxCtrl類是繼承它的,所有對外接口都在myocx.idl這里聲明,在CmyocxCtrl類中實現(xiàn)

myocx.def,ocx是一種特殊的dll,所以同樣有def文件,內(nèi)容如下

; myocx.def : Declares the module parameters.

EXPORTS

DllCanUnloadNow PRIVATE

DllGetClassObject PRIVATE

DllRegisterServer PRIVATE

DllUnregisterServer PRIVATE其中的PRIVATE的意思是對ocx私有,即這些函數(shù)名不會加到生成的庫文件中(編譯ocx發(fā)現(xiàn)除了生成ocx,還有一個lib文件)

(2)消息映射,調(diào)度映射,事件映射

>1含義

? ? ?消息映射:即響應(yīng)操作系統(tǒng)的消息

? ? ?調(diào)度映射:可以在外部調(diào)用的接口函數(shù),通俗的將就是一個控件可以調(diào)用它內(nèi)部的函數(shù),如CButton btn;btn.函數(shù)名();

? ? ?事件映射:單擊、雙擊等事件由ocx傳給它的容器進行響應(yīng),如按鈕的一些事件,觸發(fā)后可以在它的父窗口中進行響應(yīng)處理

>2添加調(diào)度映射

在myocx的idl中對應(yīng)的調(diào)度映射下添加:

[id(1)] void Hello();

在myocx.h中添加:

afx_msg void Hello();

//添加調(diào)度枚舉類型

enum {

//調(diào)度ID,從1開始

dispidHello = 1L,

//事件ID,從1開始

};

在myocx.cpp中添加:

void CmyocxCtrl::Hello()

{

AfxMessageBox(_T("Hello world"));

}

編譯并生成ocx,默認編譯生成的ocx也注冊好了

創(chuàng)建一個基于對話框的MFC工程,名為useocx,在對話框窗口右擊插入ActiveX 控件,快速輸入生成的ocx的前幾個字母找到ocx,添加進去

右鍵ocx,選擇添加變量,變量名設(shè)為m_myocx,設(shè)置好后,便會生成對應(yīng)的ocx類

可以看到ocx類中已經(jīng)自動含有:

void Hello()

{

InvokeHelper(0x1, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);

}

這個時候就可以利用m_myocx調(diào)用里面的Hello函數(shù)了

附:也可以在下面這個位置右鍵選擇添加添加函數(shù)實現(xiàn)

>3添加事件映射

在下圖上右鍵

選擇添加事件,選擇Click,確認,效果是在idl文件事件下面多出下面一行:

[id(DISPID_CLICK)] void Click(void);

在myocx.cpp中中間多出:

BEGIN_EVENT_MAP(CmyocxCtrl, COleControl)

EVENT_STOCK_CLICK()

END_EVENT_MAP()

效果是在useocx工程的資源對話框文件中,右鍵添加的Ocx控件,查看屬性,發(fā)現(xiàn)事件中

多出了Click屬性,此時可以添加函數(shù),運行useocx工程時鼠標點擊控件就會觸發(fā)這個函數(shù)

如果添加自定義的事件映射,則在myocxi.idl中事件映射下添加:

[id(1)] void MyDrag(void);

在myocxCtrl.h中添加

enum {

//調(diào)度映射ID

dispidHelloClick = 1L,

//事件映射ID

eventidMyDrag = 1L,

};

protected:

void MyDrag(void)

{

FireEvent(eventidMyDrag, EVENT_PARAM(VTS_NONE));

}

同樣查看useocx工程資源對話框文件控件屬性:

多出MyDrag屬性,此時可以再外面寫響應(yīng)函數(shù),具體觸發(fā)則需要根據(jù)需要在ocx內(nèi)部調(diào)用就可以觸發(fā)

這里注意ocx事件觸發(fā)都是在ocx內(nèi)部觸發(fā),外部進行響應(yīng)處理的,如button類,點擊或雙擊都是在按鈕本身觸發(fā),最后由它的父窗口進行響應(yīng)處理,自定義的事件也是要在內(nèi)部進行觸發(fā)

注意:InvokeHelper和FireEvent這兩個函數(shù)中的表示傳入形參的參數(shù)含有多個時,通過空格進行隔開(一個函數(shù)形參可以有很多個,但返回值只有一個)

總結(jié):

1.ocx有三種映射,但idl中對外提供的只有調(diào)度映射和事件映射

2.(1)ocx的類與ocx是通過idl文件中最后的類的ID建立聯(lián)系的

idl中:

// Class information for CmyocxCtrl

[

uuid(EF2CFD6B-E121-47E3-BD63-5F5DD51DCCFF)

]

在ocx類(class CMyocxctrl_use : public CWnd)中

CLSID const& GetClsid()

{

static CLSID const clsid

= { 0xEF2CFD6B, 0xE121, 0x47E3, { 0xBD, 0x63, 0x5F, 0x5D, 0xD5, 0x1D, 0xCC, 0xFF } };

return clsid;

}

(2)調(diào)度映射是通過Idl中調(diào)度函數(shù)前的ID建立聯(lián)系的

在idl中:

[id(1)] void Hello();

在在ocx類(class CMyocxctrl_use : public CWnd)中

void Hello()

{

InvokeHelper(0x1, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);

}

(3)事件映射是在內(nèi)部進行觸發(fā),也就是含有fireEvent的那個函數(shù)是在ocx內(nèi)部調(diào)用作為觸發(fā)方式,響應(yīng)在外面實現(xiàn)

3.ocx作為控件在MFC中使用時,此時該控件與它的容器是父窗口與子窗口關(guān)系,普通控件與父窗口之間的函數(shù)調(diào)用方式它也同樣適用

4ocx屬性

與myocxPropPage.h中CmyocxPropPage類有關(guān),對應(yīng)的效果:

5.ocx調(diào)試

(1)在exe中進行調(diào)試

按照上面方法在useocx工程中添加好ocx后,在myocx工程中設(shè)置以下屬性:

就可以調(diào)試了

(2)在IE中調(diào)試

首先編寫一個html文件,后綴名為htm,添加如下內(nèi)容:

HTML>

Test ActiveX

注意其中ID就是idl中類的ID,在myocx中設(shè)置如下屬性:

第一個是IE的路徑,第二個是IE地址欄中的數(shù)據(jù),根據(jù)需要可填可不填,有的是IP地址,有的是htm,這樣就可以了

說明:有的IE不是單進程的,可以通過附加到進程進行調(diào)試,也可以將IE設(shè)置成單進程的

我這里通過IE調(diào)試的時候打斷點,調(diào)試運行鼠標不可用,也不知道什么原因,暫未解決

6.ocx程序發(fā)布

OCX不能單獨運行,發(fā)布時必須拷到對應(yīng)的可執(zhí)行的程序中,一起發(fā)布

優(yōu)惠劵

kevin--你不知道的事

關(guān)注

關(guān)注

12

點贊

71

收藏

覺得還不錯?

一鍵收藏

知道了

3

評論

ocx入門淺析

1.exe,ocx,dll的區(qū)別分析:exe是一個可執(zhí)行程序,而ocx看做是一個窗口上的控件(控件即ocx,如button),dll是將函數(shù)、變量、類封裝在一起的庫ocx的形式如下:圖中的各個都是ocx控件(我是這樣認為的),只不過MFC內(nèi)置了一些控件,但是如果是自己寫的ocx控件,程序運行時必須將生成的ocx控件拷到可執(zhí)行目錄下2.ocx特點(根據(jù)普通的butto

復(fù)制鏈接

掃一掃

簡單的Web調(diào)用OCX控件

05-27

本程序簡單描述ocx在網(wǎng)頁中的調(diào)用方式,適合初步接觸網(wǎng)頁的設(shè)計人員對web調(diào)用ocx方式的理解。

c++ ActiveX基礎(chǔ)1:使用VS2010創(chuàng)建MFC ActiveX工程項目

熱門推薦

爛筆頭的專欄

01-30

7萬+

1.ActiveX的基本概念

?????????ActiveX控件可以看作是一個極小的服務(wù)器應(yīng)用程序,它不能獨立運行,必須嵌入到某個容器程序中,與該容器一起運行。這個容器包括WEB網(wǎng)頁,應(yīng)用程序窗體等。。。

???????? ActiveX控件的后綴名是OCX或者DLL。一般是以O(shè)CX和動態(tài)庫共存的形式打包成cab或者exe的文件放在服務(wù)器上,客戶端下載后運行安裝cab或exe解壓成OCX和動

3?條評論

您還未登錄,請先

登錄

后發(fā)表或查看評論

COM組件、ActiveX、OCX區(qū)別

07-03

1萬+

COM?組件就是一組接口的集合,實現(xiàn)了?IDispath?接口的?COM?組件叫做?自動化組件。在自動化組件的基礎(chǔ)上,在實現(xiàn)規(guī)定的接口就稱為?ActiveX?組件,Ocx?是?Activex?的文件載體

一般來講?,一個?ActiveX?對應(yīng)一個?Ocx?文件,?如果愿意,?一個Ocx?文件也可以包含多個?ActiveX??控件

什么是OXC(光交叉連接)?

最新發(fā)布

2301_81253485的博客

12-07

179

ROADM是全光網(wǎng)絡(luò)的關(guān)鍵技術(shù)之一,其主要目的是在線路光交換的基礎(chǔ)上進一步實現(xiàn)節(jié)點光交換。ROADM發(fā)展為CDC-F ROADM,基本上實現(xiàn)了極強的光交換能力。然而,它仍然不是全光網(wǎng)絡(luò)的最終解決方案。們知道光網(wǎng)絡(luò)是現(xiàn)代通信網(wǎng)絡(luò)的基石。如果沒有強大的光網(wǎng)絡(luò)的支持,包括8K視頻、VR/AR、智能工廠、智能城市、智能交通等大帶寬、低延遲的應(yīng)用場景都無法完美實現(xiàn)。5G和F5G也不會工作。ROADM有一些問題。最大的問題之一是光纖連接的復(fù)雜性。1.什么是OXC(光交叉連接)?2.為什么我們需要OXC?

ocx自動注冊

02-01

用于ocx的自動注冊。

將ocx控件包解壓后,放到合適的目錄,把這個工具拷貝到這個目錄,執(zhí)行即可完成注冊,不用再輸入windows的注冊命令regsvr32.exe。

適用于監(jiān)控類視頻控件,用戶層面的使用。

因為最終用戶通常不會輸入復(fù)雜命令。

我自己是將這個工具集成到我自己的軟件中了,方面用戶使用。

實際工作中,經(jīng)常發(fā)現(xiàn)用戶無法完成IE中的某些視頻控件注冊,我都是使用這個工具來解決的。懶得輸命令了。

Ocx函數(shù)查看器

09-16

Ocx函數(shù)查看器,可以打開OCX文件查看其內(nèi)部的屬性,方法等等。

便于開發(fā)人員更好的使用OCX控件。

OCX控件入門ActiveX控件入門詳解

02-07

OCX控件入門0基礎(chǔ)ActiveX控件入門詳解

OCX 入門

gongluck93的博客

03-21

1萬+

OCX入門:http://blog.csdn.net/hkcsdn/article/details/52908748

前言

ActiveX是Microsoft對于一系列策略性面向?qū)ο蟪绦蚣夹g(shù)和工具的稱呼,其中主要的技術(shù)是組件對象模型(COM)。

??ActiveX控件是一種實現(xiàn)了一系列特定接口而使其在使用和外觀上更象一個控件的COM組件。ActiveX控件這種技術(shù)涉及到了幾乎所有的C

ocx開發(fā)經(jīng)驗,ActiveX開發(fā)快速入門

xiaoxiaoyu85的專欄

12-12

7862

1. ocx下載解壓的目標位置,由注冊表項指定

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\ActiveX Cache

默認為C:\WINDOWS\Downloaded Program Files

inf文件也解壓到該目錄

下載的ocx在資源管理器中不可見,使用dir命令可見。可以使用copy

VS2010下ocx開發(fā)三部曲

dong123ohyes的專欄

09-12

1423

一、用C++ MFC ActiveX開發(fā)簡單的ocx控件

本文給出了在Visual Studio 2010開發(fā)環(huán)境下使用向?qū)Чぞ呱梢粋€簡單ocx控件的示例。

首先以管理員身份運行Visual Studio 2010,這樣做的目的是在將來編譯控件時VS2010能自動注冊ocx控件,不會出現(xiàn)權(quán)限不足導(dǎo)致失敗的錯誤。如果不使用管理員身份運行VS 2010,將來就需要使用regsvr32命令手動注冊創(chuàng)建的ocx控件(注意執(zhí)行regsvr32命令時也要使用管理員身份,即以管理員身份執(zhí)行cmd.exe,然..

什么是OCX控件?注冊它都有哪些作用?

limuzi13的專欄

09-16

9068

當標準控件不能完全滿足用戶需求時,用戶可以編寫自己的控件插入到編程工具中使用,編寫的控件就是OCX?,F(xiàn)在網(wǎng)頁中也可以嵌入OCX,并稱其為ActiveX控件。目前可以編寫OCX的工具包括VB、VC、Delphi。易語言也即將支持OCX。 OCX是一種COM控件,OCX通常所說ActiveX控件,COM的原理是接口與實現(xiàn)分離,為了標識每個OCX的接口,必須在注冊表里注冊該控件的 GUID碼。這樣使用

chrome史上最完整調(diào)用ocx完整解決方案

03-22

關(guān)鍵字 chrome,ocx,控件,activeX。用于解決chrome調(diào)用ocx控件的一個demo。

OCX控件查看工具

12-06

查看OCX控件的屬性,函數(shù)等,完美支持OCX控件的二次開發(fā)。

ocx信息查看工具

10-29

一個查看ocx的CLSID、函數(shù)名稱查看工具。這個工具是我平常使用第三方ocx控件最常用的工具之一。

解決ocx控件在ie中加載不上的問題

08-17

這個工具有兩個版本html版和bat+reg版

html版 需要用戶用ie打開,然后允許activeX的運行就行了,這里面會吧“OCX控件強行注冊+可信任站點添加+可信任站點ActiveX安全設(shè)置啟用+收藏夾”全都做了,收藏夾有提示是否進行收藏

bat+reg版 考慮到用戶電腦使用能力不強的情況下,沒有對路徑及activeX允許運行的約束,采用bat腳本注冊ocx,reg導(dǎo)入ie安全設(shè)置和可信任站點,這個版本就沒有添加將網(wǎng)址加入收藏夾的功能

WEB載入OCX控件教程(VC的OCX教程完整版)

06-02

包括OCX的制作、WEB頁面載入、出錯的提示等比較完整的教程

Ocx控件開發(fā)入門

05-20

初學(xué)者開發(fā)ocx的文檔,使用vs2010制作

OCX函數(shù)查看工具EXE

03-14

OCX函數(shù)查看工具EXE

c++開發(fā)ocx入門實踐三--基于opencv的簡易視頻播發(fā)器ocx

05-14

c++開發(fā)ocx入門實踐三--基于opencv的簡易視頻播發(fā)器ocx 利用opencv做了個簡易的視頻播放器的ocx,可以在c++/c#/web中加載

ocx websocker

08-04

OCX是一種ActiveX控件,用于在Windows操作系統(tǒng)上嵌入和操縱各種自定義功能。WebSocket是一種用于實現(xiàn)實時雙向通信的協(xié)議,它允許瀏覽器和服務(wù)器之間建立持久的連接。下面是有關(guān)OCX和WebSocket的一些相關(guān)信息。

首先,OCX與WebSocket之間并沒有直接的聯(lián)系。OCX主要用于在Windows上開發(fā)和部署自定義應(yīng)用程序,而WebSocket主要用于在Web瀏覽器和服務(wù)器之間進行實時通信。然而,有些OCX控件可能會在Web瀏覽器中使用,通過JavaScript與WebSocket進行通信。

要在Web瀏覽器中使用OCX控件與WebSocket進行通信,需要使用一些中間件或框架來使二者兼容。一種常見的方法是使用JavaScript和HTML5來實現(xiàn)與WebSocket通信的功能,并在需要時通過JavaScript與OCX控件進行交互。

為了使OCX控件與WebSocket通信,需要在JavaScript代碼中使用WebSocket API來建立連接、發(fā)送和接收數(shù)據(jù)等操作。同時,通過調(diào)用OCX控件的方法或設(shè)置其屬性,可以在瀏覽器中顯示OCX控件的功能和結(jié)果。

總結(jié)來說,OCX和WebSocket是兩種不同的技術(shù),但可以通過一些中間件或框架實現(xiàn)它們之間的通信。通過在瀏覽器中使用JavaScript和HTML5的WebSocket API,可以與OCX控件進行交互,實現(xiàn)自定義的功能和實時通信。

“相關(guān)推薦”對你有幫助么?

非常沒幫助

沒幫助

一般

有幫助

非常有幫助

提交

kevin--你不知道的事

CSDN認證博客專家

CSDN認證企業(yè)博客

碼齡9年

暫無認證

71

原創(chuàng)

5萬+

周排名

6萬+

總排名

30萬+

訪問

等級

2852

積分

29

粉絲

132

獲贊

38

評論

434

收藏

私信

關(guān)注

熱門文章

ocx入門淺析

41582

獲取windows當前登錄的用戶名

35810

windows代碼設(shè)置默認音頻輸出設(shè)備

17192

WIN32 預(yù)定義宏WIN32,_WIN32,_WIN64介紹使用

13805

大B、小B、碼率計算

13228

分類專欄

讀書驛站

6篇

【理財篇】幣入門介紹

數(shù)據(jù)結(jié)構(gòu)與算法

19篇

工作報告篇

2篇

工作報告

C++17

調(diào)試

2篇

STL

1篇

C++20

1篇

[C++14]

1篇

MFC/WIN32

9篇

win32

7篇

gdi/gdi+

1篇

QT

1篇

IWebBrowser2

4篇

c-c++

29篇

一維數(shù)組

2篇

二維數(shù)組

2篇

最新評論

【c++實例總結(jié)】 時間time_t轉(zhuǎn)為字符串輸出(strftime)

sanqima:

CTime轉(zhuǎn)string總結(jié)得很好,給樓主點贊。

【c++實例總結(jié)】 幀率與碼率

CSDN-Ada助手:

多虧了你這篇博客, 解決了問題: https://ask.csdn.net/questions/8041307, 請多輸出高質(zhì)量博客, 幫助更多的人

WIN32 預(yù)定義宏WIN32,_WIN32,_WIN64介紹使用

qq_41441842:

微軟非要這樣整WIN32生怕別人搞懂了

WIN32 預(yù)定義宏WIN32,_WIN32,_WIN64介紹使用

香蕉有毒:

這里面門道很多,這篇文章不錯。

windows代碼設(shè)置默認音頻輸出設(shè)備

小趙小趙福星高照~:

大佬如何設(shè)置默認輸入設(shè)備呢

您愿意向朋友推薦“博客詳情頁”嗎?

強烈不推薦

不推薦

一般般

推薦

強烈推薦

提交

最新文章

[c++] 指定精度格式化

【c++】sort與priority_queue第三個參數(shù)

【c++】一維數(shù)組與二維數(shù)組動態(tài)創(chuàng)建

2023年1篇

2022年11篇

2021年36篇

2020年21篇

2019年9篇

2018年25篇

2017年10篇

2016年4篇

目錄

目錄

分類專欄

讀書驛站

6篇

【理財篇】幣入門介紹

數(shù)據(jù)結(jié)構(gòu)與算法

19篇

工作報告篇

2篇

工作報告

C++17

調(diào)試

2篇

STL

1篇

C++20

1篇

[C++14]

1篇

MFC/WIN32

9篇

win32

7篇

gdi/gdi+

1篇

QT

1篇

IWebBrowser2

4篇

c-c++

29篇

一維數(shù)組

2篇

二維數(shù)組

2篇

目錄

評論?3

被折疊的??條評論

為什么被折疊?

到【灌水樂園】發(fā)言

查看更多評論

添加紅包

祝福語

請?zhí)顚懠t包祝福語或標題

紅包數(shù)量

紅包個數(shù)最小為10個

紅包總金額

紅包金額最低5元

余額支付

當前余額3.43元

前往充值 >

需支付:10.00元

取消

確定

下一步

知道了

成就一億技術(shù)人!

領(lǐng)取后你會自動成為博主和紅包主的粉絲

規(guī)則

hope_wisdom 發(fā)出的紅包

實付元

使用余額支付

點擊重新獲取

掃碼支付

錢包余額

0

抵扣說明:

1.余額是錢包充值的虛擬貨幣,按照1:1的比例進行支付金額的抵扣。 2.余額無法直接購買下載,可以購買VIP、付費專欄及課程。

余額充值

OCX 入門-CSDN博客

>

OCX 入門-CSDN博客

OCX 入門

最新推薦文章于?2021-12-12 12:52:26?發(fā)布

github/gongluck

最新推薦文章于?2021-12-12 12:52:26?發(fā)布

閱讀量1.5w

收藏

18

點贊數(shù)

4

分類專欄:

Windows

文章標簽:

OCX

Windows

專欄收錄該內(nèi)容

35 篇文章

0 訂閱

訂閱專欄

OCX入門:http://blog.csdn.net/hkcsdn/article/details/52908748 前言

ActiveX是Microsoft對于一系列策略性面向?qū)ο蟪绦蚣夹g(shù)和工具的稱呼,其中主要的技術(shù)是組件對象模型(COM)。

??ActiveX控件是一種實現(xiàn)了一系列特定接口而使其在使用和外觀上更象一個控件的COM組件。ActiveX控件這種技術(shù)涉及到了幾乎所有的COM和OLE的技術(shù)精華,如可鏈接對象、統(tǒng)一數(shù)據(jù)傳輸、OLE文檔、屬性頁、永久存儲以及OLE自動化等。

   ActiveX控件作為基本的界面單元,必須擁有自己的屬性和方法以適合不同特點的程序和向包容器程序提供功能服務(wù),其屬性和方法均由自動化服務(wù)的 IDispatch接口來支持。除了屬性和方法外,ActiveX控件還具有區(qū)別于自動化服務(wù)的一種特性--事件。事件指的是從控件發(fā)送給其包容程序的一 種通知。與窗口控件通過發(fā)送消息通知其擁有者類似,ActiveX控件是通過觸發(fā)事件來通知其包容器的。事件的觸發(fā)通常是通過控件包容器提供的IDispatch接口來調(diào)用自動化對象的方法來實現(xiàn)的。在設(shè)計ActiveX控件時就應(yīng)當考慮控件可能會發(fā)生哪些事件以及包容器程序?qū)ζ渲械哪男┦录信d趣并將這些事件包含進來。與自動化服務(wù)不同,ActiveX控件的方法、屬性和事件均有自定義(custom)和庫存(stock)兩種不同的類 型。自定義的方法和屬性也就是是普通的自動化方法和屬性,自定義事件則是自己選取名字和Dispatch ID的事件。而所謂的庫存方法、屬性和事件則是使用了ActiveX控件規(guī)定了名字和Dispatch ID的"標準"方法、屬性和事件。

   ActiveX控件可以使COM組件從外觀和使用上能與普通的窗口控件一樣,而且還提供了類似于設(shè)置Windows標準控件屬性的屬性頁,使其能夠在包容器程序的設(shè)計階段對ActiveX控件的屬性進行可視化設(shè)置。ActiveX控件提供的這些功能使得對其的使用將是非常方便的。本文下面即以MFC為工 具對ActiveX控件的開發(fā)進行介紹。

一、創(chuàng)建項目

1.打開VS2008新建MFC項目。這里我們?nèi)∶麨椤癆ctiveXDemo”?。

2.輸入項目名稱為“ActiveXDemo”和項目位置。

點擊確定進行下一步。

3.運行時許可證默認不勾選。

如果勾上,生成時會多出一個文件.lic ,?只有擁有許可的用戶才可以調(diào)用ocx插件。繼續(xù)下一步。

4.完成創(chuàng)建控件項目自動創(chuàng)建好MFC ActiveX程序框架。

其中 的 ACtiveXDemoApp 是 我 們 這 個 控 件 的 主 程 序 模 塊 , 定 義 了 控 件的 注 冊

( DllRegisterServer)、刪除(DllUnregisterServer)等功能,一般不用動,如有需要我們可以

在其中的 InitInstance 和ExitInstance 中定義我們自己的初始化和終止操作代碼,一般也就是一些資源的初始化和銷毀工作。

CActiveXDemoCtrl 是控件類,我們要做的控件功能基本上就是要在這個類中實現(xiàn)。

需要提一下的是在這個類中重寫了父類的 OnDraw 函數(shù),有如下兩句代碼:

pdc->FillRect(rcBounds,

CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH)));

pdc->Ellipse(rcBounds);

也就是在控件上畫了一個橢圓, 實際控件開發(fā)中可以根據(jù)功能需要修改重寫這個函數(shù)來

繪制控件界面。

CActiveXDemoCtrlPropPage 是屬性頁類,這個類實現(xiàn)了一個在開發(fā)時設(shè)定控件屬性的對話

框。

ActiveXDemoLib 是為客戶程序提供本控件的屬性、方法以及可能響應(yīng)的事件的接口的。

二、添加屬性,方法和事件

1.屬性

屬性是ACTIVEX控件想所有容器公開的數(shù)據(jù)成員。

如下圖右鍵添加屬性,屬性變量類型我們選LONG,變量名為TimeStyle,其他默認。

2.方法

方法就是控件開放給用戶使用的一些功能函數(shù),類似于C++的類函數(shù)。開發(fā)人員可以提供自定義功能。

如下圖所示我們添加一個方法Start(),其他默認。

如下圖所示,我們可以從類視圖清楚的看到我們添加的屬性和方法名。

3.事件

ACTIVEX通過事件通知容器控件上發(fā)生了某些事情。將控件開發(fā)人員的某一特定操作識別為事件。

如下圖所示,我們添加事件,添加事件順序按照如圖所示。事件名我們寫OnSend ,內(nèi)部名稱習(xí)慣上修改為FIleOnSend.添加一個參數(shù)lpstrTime.

如下圖,我們可以清楚地看到我們剛才添加的事件

在start事件中我們調(diào)用showcurrenttime函數(shù),函數(shù)實現(xiàn)已經(jīng)給出。接著我們回調(diào)事件函數(shù)。

三、注冊與反注冊

1.唯一標識ID

如下圖Classid 是該控件的唯一標識,這個我們可以在注冊表里找到。

2.注冊

命令行輸入regsvr32 控件路徑XXX

3.反注冊

反注冊控件regsvr32? -u?控件路徑XXX

到此我們OCX 控件制作就完成了。

入門二:http://blog.csdn.net/LG1259156776/article/details/52004566

最近開始學(xué)ActiveX控件編程,上手不太容易,上網(wǎng)想找相關(guān)教程也沒合適的,最后還是在師哥的指導(dǎo)下完成了第一個簡單控件的開發(fā),現(xiàn)在把開發(fā)過程貼出來與大家分享一下~

(環(huán)境說明——平臺:vs2005;語言:VC++;基于對話框)

?

①新建工程:

首先以管理員身份運行vs2005,文件->新建->項目,選擇Visual C++下MFC,模板選MFC ActiveX控件,自定義工程名(我的為MyActiveX),確定后基本采用默認設(shè)置,直接”下一步”,不過”控件設(shè)置”中”創(chuàng)建的控件基于”改選為STATIC。

??

?

?

②介紹一下默認添加的三個基本類:

CMyActiveXApp:

提供了控件類的初始化(InitInstance)和銷毀代碼(ExitInstance)。

CMyActiveXCtrl:

用來實現(xiàn)控件建好后有什么功能。

CMyActiveXPropPage:

用來建立屬性頁,當控件建好后,可讓用戶通過“可視化”的屬性頁用鼠標來選擇控件的屬性。

?

?

?

③新建Dialog視圖:

1)選中資源視圖,右鍵單擊Dialog,選擇”插入Dialog”。(有些vs2005的資源視圖在整個工程界面的右邊側(cè))

?

2)默認生成一個包含兩個按鈕的對話框,對話框ID(默認為IDD_DIALOG1)可自行更改(不與其它的重復(fù)即可,我的改為IDD_MYDIALOG)

?

3)重新設(shè)計對話框,并增加一個”edit control”(文本框)控件。所有標準控件都在右側(cè)的”工具箱”中(有的vs2005的工具箱在左側(cè)),選中后再在對話框中相應(yīng)位置單擊一下即可,可直接拖動和縮放控件。這些控件的ID都可自行修改。

?

4)注意:關(guān)于對話框,一定要將其Visible屬性改為True(也就是ID為IDD_MYDIALOG的這個最外層對話框?qū)?yīng)的Visible屬性,其默認為False),否則,即使其它一切都對,最后對話框的內(nèi)容還是不顯示??!

?

5)另外,對話框的Style屬性改為Child(默認為Popup),這樣運行的控件就會嵌在網(wǎng)頁窗口內(nèi),而不是單獨彈出一個對話框。當然,這里要根據(jù)你的實際需求選擇。

?

6)將文本框控件(IDC_EDIT1)的Multiline屬性設(shè)為True(默認為False),使的文本框內(nèi)的內(nèi)容可以分行顯示。

?

?

?

④為Dialog創(chuàng)建對應(yīng)的類:

1)右鍵單擊對話框視圖(不要點到某個具體控件),選擇”添加類”

?

2)自定義類名,我的叫CMyDialog,注意其對話框ID與IDD_MYDIALOG對應(yīng),單擊”完成”

?

3)vs2005會自動為你添加基本的代碼

?

?

⑤為類添加成員變量

(一)為對話框類創(chuàng)建實例變量

1)在基本類CMyActiveXCtrl中為剛剛新建的對話框類創(chuàng)建實例變量:在類視圖中右鍵單擊CMyActiveXCtrl,選擇添加->添加變量

?

2)變量類型改為CMyDialog(需手動輸入,就是剛剛新建的對話框類的類名),變量名自定義,我的為m_MyDialog,注釋就自己隨意添加啦~

?

3)完成后就可發(fā)現(xiàn)MyActiveXCtrl.h中最后面成功添加上了對話框?qū)ο蟆?/p>

P.S.工程記得隨時保存!

?

?

(二)為對話框中的控件創(chuàng)建實例變量

1)以”確定”按鈕為例,在該按鈕處單擊右鍵,選擇”添加變量”

?

2)自定義變量名,我的叫m_OKButton。

注意一下”控件變量”是否勾選,”控件ID”是否選為IDOK,若前面是在”確定”按鈕控件上右鍵添加變量的話,這兩項應(yīng)該都默認是對的。

確認后點”完成”即可為該按鈕在對話框CMyDialog類中添加相應(yīng)的成員變量。

?

3)仿照上述幾步,為”取消”按鈕和文本編輯框也添加相應(yīng)的成員變量,分別取名為m_CancelButton和m_Edit,對應(yīng)控件ID為IDCANCEL和IDC_EDIT1。完成后MyDialog.h的最后面就會添加上這幾個變量。

?

?

⑥在相應(yīng)事件中添加代碼以創(chuàng)建并繪制對話框和控件

1)為CMyActiveXCtrl類處理WM_CREATE事件,以初始化對話框?qū)ο螅?/p>

左側(cè)選中CMyActiveXCtrl,右側(cè)屬性欄選擇”消息”那個小圖標,找到WM_CREATE,點擊下拉按鈕,選擇”<添加>OnCreate”。

?

2)在MyActiveXCtrl.cpp中現(xiàn)在會多出OnCreate函數(shù)(這不是我們自定義的函數(shù),實際是重寫的父類的函數(shù)),在其中添加一段代碼:

m_MyDialog.Create(IDD_MYDIALOG,this);??//初始化對話框

?

3)在MyActiveXCtrl.cpp中的OnDraw函數(shù)中添加繪制對話框的代碼:

m_MyDialog.MoveWindow(rcBounds,true);

并注釋掉后面的”DoSuperclassPaint(pdc, rcBounds);”

?

?

??

⑦為確定按鈕添加點擊響應(yīng)事件

1)選中”確定”按鈕,在右側(cè)的屬性欄點擊控件事件小圖標(小閃電),點擊BN_CLICKED,再點擊右側(cè)對應(yīng)的下拉按鈕選擇添加OnBnClickedOk函數(shù)(在CMyDialog類中)。

?

2)在CMyDialog.cpp中為OnBnClickedOk函數(shù)添加相應(yīng)代碼:

?????????int???nLength=m_Edit.SendMessage(WM_GETTEXTLENGTH);????

?????????m_Edit.SetSel(nLength, nLength);????

?????????m_Edit.ReplaceSel(_T("Hello World!——企鵝Sheldon/r/n"));

使得每點擊一次確定按鈕,文本編輯框添加一行文本:“Hello World!——企鵝Sheldon”。

注釋掉”O(jiān)nOK();”,這樣點擊確定按鈕就不會直接關(guān)閉對話框了。

?

?

?

⑧編譯調(diào)試程序,生成.ocx文件

若以上步驟都成功完成,那么恭喜你,一個簡單的ActiveX控件就已經(jīng)初步編寫完成啦!下面進行編譯調(diào)試。

1)調(diào)試前,設(shè)置編譯模式為Release,也就是將工具欄中執(zhí)行小圖標旁的Debug改選為Release。

?

2)在最上一行的工具欄中選擇?調(diào)試->啟動調(diào)試

?

3)成功后會在工程根目錄的release文件夾下生成相應(yīng)文件,其中的MyActiveX.ocx即為我們所需的控件文件,不過它不能直接獨立運行,需要借助瀏覽器,并且需要先在系統(tǒng)注冊。

注:調(diào)試過程中可能提示”無法找到”tstcon32.exe”的調(diào)試信息…要繼續(xù)調(diào)試嗎?”,選擇是即可。

?

?

⑨注冊控件MyActiveX.ocx

1)用管理員身份運行”Windows命令處理程序”(命令提示符),轉(zhuǎn)到MyActiveX.ocx文件所在目錄下,為求簡便,我將其移到了C盤的MyActiveX文件夾下。

?

相關(guān)命令:

1.cd /MyActiveX?:轉(zhuǎn)到C盤下的MyActiveX文件夾下。

2.dir?:查看當前目錄下文件信息

3.regsvr32 xxx.ocx?:裝載控件

4.regsvr32 -u xxx.ocx?:卸載控件

5.regedit?:注冊表編輯器(在第一個文件夾下的CLSID目錄下,有注冊號信息)

注:ocx控件使用前一定要先卸載舊的。

?

這里是第一次注冊該控件,轉(zhuǎn)到相應(yīng)目錄下后直接輸入regsvr32 MyActiveX.ocx即可。成功后會有提示框,直接點確定。

?

?

?

??

⑩注冊成功后插入相應(yīng)網(wǎng)頁中

編寫測試網(wǎng)頁,我推薦使用微軟的ActiveX Control Pad,不用自己寫代碼。

1)運行Microsoft ActiveX Control Pad軟件,在代碼下方空白處單擊右鍵,選擇”Insert ActiveX Control”

?

2)選中我們新注冊的MyActiveX Control控件,單擊OK

?

3)這時會彈出兩個框,一個是我們的控件視圖,一個是屬性。為控件視圖調(diào)整適當?shù)拇绑w大小,然后關(guān)閉。

?

4)軟件會自動幫你在和之間添加上相應(yīng)代碼,點擊工具欄上的保存按鈕,將網(wǎng)頁保存到所需位置。我就直接保存到桌面上。

?

5)到此,測試網(wǎng)頁也編輯完成,用IE打開測試網(wǎng)頁,允許阻止的內(nèi)容,看看,控件是不是成功顯示啦~

?

?

?

?

?

好了,一個簡單的ActiveX控件就已全部完成,這是一個最基本的例子,希望對初學(xué)ActiveX控件的同學(xué)有所幫助!

?

?

?

P.S.隨便說說Debug和Release的區(qū)別吧: ??? 兩者都是用于編譯,不過兩者所依賴的庫不同,用處也有區(qū)別,具體說來: ??? Debug我們一般叫調(diào)試,編譯的結(jié)果會包含調(diào)試信息,它會有相應(yīng)的宏,而且不做任何優(yōu)化,所以編譯出來的.ocx或.exe文件會大一點。一般開發(fā)者在開發(fā)過程中會使用Debug調(diào)試。 ??? Release則通常稱為發(fā)布版本,它不保存調(diào)試信息,而且會進行優(yōu)化,所以編譯出來的.ocx或.exe文件會小一點,以期達到代碼最小和速度最優(yōu)。一般是最終完成后發(fā)布的版本,為用戶使用,一般客戶不允許在發(fā)布版本上進行調(diào)試。

注冊反注冊O(shè)CX:http://blog.csdn.net/piaopiaopiaopiaopiao/article/details/41649495

一:用MFC生成的ActiveX控件,需要注冊之后才能使用。

注意:注冊與反注冊都需要管理員權(quán)限,才能操作成功。

注冊命令:regsvr32 "E:\Clock.ocx"

反注冊命令:regsvr32 /u?"E:\Clock.ocx"

在此介紹兩個實用工具:

工具一:RegDllView

功能:查看電腦中已注冊的組件(dll,exe,ocx),方便的反注冊(卸載)組件,刪除已注冊但文件被刪除的假組件。

下載地址:http://www.xiazaiba.com/html/2059.html

工具二:注冊表清理工具

功能:清除一些已注冊但ocx被刪除的組件,即清理垃圾注冊項。

下載地址:http://mydown.yesky.com/soft/utilitie/register/282/438782.shtml

調(diào)試OCX:http://blog.csdn.net/cbnotes/article/details/8281558

1. TSTCON32.exe的編譯:

在編寫Activex控件時,可以用到Active X control test container來測試Activex控件,這在Visual Studio 6.0里面是很方便查找的,工具菜單下面就有。但是在Visaul studio 2008 里面TSTCON32.exe這個文件卻消失了。是微軟疏忽忘了嗎?不是的,而是微軟把它放在了例子程序里面(提供源碼),需要自己編譯。詳細目錄:比如我裝在C盤里面,VC的例子在

“C:\Program Files\MicrosoftVisual Studio 9.0\Samples\2052\AllVCLanguageSamples.zip”,把這個文件解壓縮以后,在下面的目錄可以找到TSTCON32.exe的源代碼:“C++\MFC\ole\TstCon”,自己編譯就可以了。?

如果沒有相關(guān)示例,請到這里下載:

http://msdn.microsoft.com/zh-cn/library/f9adb5t5(v=vs.90).aspx

打開TstCon工程后,會發(fā)現(xiàn)其中包括兩個工程:TCProps和TstCon。

圖一:TSTCON解決方案共有兩個項目

注意得先編譯TCProps(即將TCProps設(shè)置為“設(shè)為啟動項目”),然后再編譯TstCon?。?!

2.注意事項:

1.由于默認的是Itanium解決方案平臺,所以在編譯TCProps和TstCon要先將編譯平臺選為Win32。

2.如果是在Vista或者windows7操作系統(tǒng)下面。你在編譯的時候,需要將這兩個項目屬性中的設(shè)置為:“啟用用戶賬戶控制”設(shè)置為“否”。這樣編譯后的結(jié)果才可以正常在windows7或者vista上面運行,否則在運行時將出現(xiàn)系統(tǒng)配置錯誤的提示。具體設(shè)置如下圖所示:

圖二:TCProps項目的設(shè)置

圖三:TstCon項目的設(shè)置

提供編譯好的TstCon32.exe以供下載(debug版)

http://download.csdn.net/detail/cbnotes/4871829

3.設(shè)置在工具菜單中可見:

將上面的生成的TstCon32.exe顯示在VS2008 IDE的工具菜單中,以便調(diào)用。

具體步驟為:點擊:工具->外部工具,將彈出如下對話框:

圖四:外部工具

點擊“添加”按鈕,填寫底部的相關(guān)信息,設(shè)置如下圖所示:

圖五:相關(guān)設(shè)置信息

如上圖所示,

標題(2):設(shè)置為工具的名稱,可以根據(jù)自己的喜歡設(shè)置名字。

命令(3):設(shè)置工具的完整路徑。

其它的設(shè)置可以不填,然后點擊“應(yīng)用”按鈕。

在工具菜單中,將出現(xiàn)“ActiveX控件測試容器”的菜單項,點擊該項,將彈出ActiveX控件測試容器程序(即TstCon32.exe),如下圖所示:

圖六:ActiveX控件測試容器

?

要測試某個ActiveX控件,點擊“Edit->Inser New Control…”,將彈出控件選擇框,選擇要測試的控件即可(控件必須要先注冊)。

轉(zhuǎn)載請說明出處,謝謝。http://my.csdn.net/cbnotes

優(yōu)惠劵

github/gongluck

關(guān)注

關(guān)注

4

點贊

18

收藏

覺得還不錯?

一鍵收藏

知道了

1

評論

OCX 入門

OCX入門:http://blog.csdn.net/hkcsdn/article/details/52908748前言ActiveX是Microsoft對于一系列策略性面向?qū)ο蟪绦蚣夹g(shù)和工具的稱呼,其中主要的技術(shù)是組件對象模型(COM)。??ActiveX控件是一種實現(xiàn)了一系列特定接口而使其在使用和外觀上更象一個控件的COM組件。ActiveX控件這種技術(shù)涉及到了幾乎所有的C

復(fù)制鏈接

掃一掃

專欄目錄

1?條評論

您還未登錄,請先

登錄

后發(fā)表或查看評論

OCX DLL EXE反編譯工具_OCXDLLEXE反編譯工具_非常適用的工具_

09-29

OCX DLL EXE反編譯工具,非常適用的工具

OCX控件了解

weixin_34128237的博客

08-12

477

一、OCX組件的來歷

  一般的開發(fā)工具都會提供一些標準控件,但不管標準控件多么強大、多么完善,都不能完全滿足用戶的需要。所以易語言就提供一個接口,允許用戶編寫自己的控件插入到易語言中使用。用戶編寫自己的控件在使用方法上同標準控件是相同。按照易語言的接口標準編寫的控件就是OCX。由于使用OCX可以節(jié)省開發(fā)軟件的時間,所以現(xiàn)在幾乎所有開發(fā)工具都允許用戶使用OCX來增強其功...

用VB寫OCX控件

青哥

10-05

3638

用VB寫OCX控件

一、 OCX簡介

OCX,即對象類別擴充組件??丶淖畲蠛锰幨强芍貜?fù)利用,甚至可以在不同的編程語言之間使用,例如可以在VB中嵌入使用VC開發(fā)的控件。

二、用VB做一個OCX控件

1、打開VB6.0,鼠標點擊左上角“文件(F)”,選擇“新建工程(N)”。在彈出的對話框中選擇“ActiveX控件”選項,點擊“確定”按鈕,如下圖所示。

2、進入主界面,將工程名從默認的“工程1”改為“timectrl”,如下圖所示。

3、在控件的界面里拖放一個“Label”控件和一個“Timer”

ocx注冊方法,vs安裝包自動安裝ocx,以及ocx注冊失敗的解決方法

Tanasha114的博客

10-21

1萬+

一、ocx注冊方法

方法一:使用bat命令注冊ocx(使用管理員權(quán)限運行)

創(chuàng)建文本文件,寫入下列命令后,修改文件后綴名為.bat,將該bat文件放置ocx所在文件夾下,然后使用管理員權(quán)限運行該bat文件即可(將下列命令中VideoWebCtl.ocx替換成你需要注冊的ocx名稱即可)。

cd /d %~dp0

regsvr32 VideoWebCtl.ocx

如果注冊成功,會顯示下圖彈窗。

方法二:使用bat命令注冊ocx(雙擊運行bat文件,無需使用管理員權(quán)限運行)

同方法一,只是..

ocx開發(fā)經(jīng)驗,ActiveX開發(fā)快速入門

xiaoxiaoyu85的專欄

12-12

7862

1. ocx下載解壓的目標位置,由注冊表項指定

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\ActiveX Cache

默認為C:\WINDOWS\Downloaded Program Files

inf文件也解壓到該目錄

下載的ocx在資源管理器中不可見,使用dir命令可見??梢允褂胏opy

ocx入門淺析

kevin的博客

12-20

4萬+

1.exe,ocx,dll的區(qū)別

分析:exe是一個可執(zhí)行程序,而ocx看做是一個窗口上的控件(控件即ocx,如button),dll是將函數(shù)、變量、類封裝在一起的庫

ocx的形式如下:

圖中的各個都是ocx控件(我是這樣認為的),只不過MFC內(nèi)置了一些控件,但是如果是自己寫的ocx控件,程序運行時必須將生成的ocx控件拷到可執(zhí)行目錄下

2.ocx特點(根據(jù)普通的butto

VS2010下ocx開發(fā)三部曲

dong123ohyes的專欄

09-12

1423

一、用C++ MFC ActiveX開發(fā)簡單的ocx控件

本文給出了在Visual Studio 2010開發(fā)環(huán)境下使用向?qū)Чぞ呱梢粋€簡單ocx控件的示例。

首先以管理員身份運行Visual Studio 2010,這樣做的目的是在將來編譯控件時VS2010能自動注冊ocx控件,不會出現(xiàn)權(quán)限不足導(dǎo)致失敗的錯誤。如果不使用管理員身份運行VS 2010,將來就需要使用regsvr32命令手動注冊創(chuàng)建的ocx控件(注意執(zhí)行regsvr32命令時也要使用管理員身份,即以管理員身份執(zhí)行cmd.exe,然..

什么是OCX控件?注冊它都有哪些作用?

limuzi13的專欄

09-16

9068

當標準控件不能完全滿足用戶需求時,用戶可以編寫自己的控件插入到編程工具中使用,編寫的控件就是OCX?,F(xiàn)在網(wǎng)頁中也可以嵌入OCX,并稱其為ActiveX控件。目前可以編寫OCX的工具包括VB、VC、Delphi。易語言也即將支持OCX。 OCX是一種COM控件,OCX通常所說ActiveX控件,COM的原理是接口與實現(xiàn)分離,為了標識每個OCX的接口,必須在注冊表里注冊該控件的 GUID碼。這樣使用

c++ ActiveX基礎(chǔ)1:使用VS2010創(chuàng)建MFC ActiveX工程項目

熱門推薦

爛筆頭的專欄

01-30

7萬+

1.ActiveX的基本概念

?????????ActiveX控件可以看作是一個極小的服務(wù)器應(yīng)用程序,它不能獨立運行,必須嵌入到某個容器程序中,與該容器一起運行。這個容器包括WEB網(wǎng)頁,應(yīng)用程序窗體等。。。

???????? ActiveX控件的后綴名是OCX或者DLL。一般是以O(shè)CX和動態(tài)庫共存的形式打包成cab或者exe的文件放在服務(wù)器上,客戶端下載后運行安裝cab或exe解壓成OCX和動

OCX控件入門ActiveX控件入門詳解

02-07

OCX控件入門0基礎(chǔ)ActiveX控件入門詳解

Ocx控件開發(fā)入門

05-20

初學(xué)者開發(fā)ocx的文檔,使用vs2010制作

帶界面的OCX及測試程序(入門級)

02-18

一個帶界面的ocx及測試程序,入門級。想學(xué)的人,可以參考這個基本框架,實現(xiàn)更復(fù)雜的OCX界面。 一個帶界面的ocx及測試程序,入門級。想學(xué)的人,可以參考這個基本框架,實現(xiàn)更復(fù)雜的OCX界面。

Java畢設(shè)-基于springboot+Vue的流浪動物管理系統(tǒng)2(附源碼,數(shù)據(jù)庫,教程).zip

03-06

Java 畢業(yè)設(shè)計,Java 課程設(shè)計,基于 SpringBoot 開發(fā)的,含有代碼注釋,新手也可看懂。畢業(yè)設(shè)計、期末大作業(yè)、課程設(shè)計、高分必看,下載下來,簡單部署,就可以使用。

包含:項目源碼、數(shù)據(jù)庫腳本、軟件工具等,前后端代碼都在里面。

該系統(tǒng)功能完善、界面美觀、操作簡單、功能齊全、管理便捷,具有很高的實際應(yīng)用價值。

項目都經(jīng)過嚴格調(diào)試,確??梢赃\行!

1. 技術(shù)組成

前端:html、javascript、Vue

后臺框架:SpringBoot

開發(fā)環(huán)境:idea

數(shù)據(jù)庫:MySql(建議用 5.7 版本,8.0 有時候會有坑)

數(shù)據(jù)庫工具:navicat

部署環(huán)境:Tomcat(建議用 7.x 或者 8.x 版本), maven

2. 部署

如果部署有疑問的話,可以找我咨詢

后臺路徑地址:localhost:8080/項目名稱/admin/dist/index.html

前臺路徑地址:localhost:8080/項目名稱/front/index.html (無前臺不需要輸入)

Swift 基礎(chǔ)庫. A collection of Swift extensions and utilities.zip

最新發(fā)布

03-06

Swift 基礎(chǔ)庫. A collection of Swift extensions and utilities.zip

剪映使用教程s240306.pptx

03-06

剪映使用教程s240306.pptx

OFO共享單車(Swift版).zip

03-06

OFO共享單車(Swift版).zip

快速、簡潔、解決大文件內(nèi)存溢出的java處理Excel工具.zip

03-06

Java語音項目的資源包括原生的JSAPI、開源庫如CMU Sphinx和FreeTTS,商業(yè)化的服務(wù)如Google Cloud Speech-to-Text API,以及其他框架和工具。通過利用這些資源,您可以開發(fā)出功能強大的語音應(yīng)用程序。Java語音項目的資源包括原生的JSAPI、開源庫如CMU Sphinx和FreeTTS,商業(yè)化的服務(wù)如Google Cloud Speech-to-Text API,以及其他框架和工具。通過利用這些資源,您可以開發(fā)出功能強大的語音應(yīng)用程序。

ScrollView嵌套ScrolloView解決方案支持OC _ Swift

03-06

ScrollView嵌套ScrolloView(UITableView 、UICollectionView)解決方案, 支持OC _ Swift(持續(xù)更新中...)實現(xiàn)原理:.zip

ocx websocker

08-04

OCX是一種ActiveX控件,用于在Windows操作系統(tǒng)上嵌入和操縱各種自定義功能。WebSocket是一種用于實現(xiàn)實時雙向通信的協(xié)議,它允許瀏覽器和服務(wù)器之間建立持久的連接。下面是有關(guān)OCX和WebSocket的一些相關(guān)信息。

首先,OCX與WebSocket之間并沒有直接的聯(lián)系。OCX主要用于在Windows上開發(fā)和部署自定義應(yīng)用程序,而WebSocket主要用于在Web瀏覽器和服務(wù)器之間進行實時通信。然而,有些OCX控件可能會在Web瀏覽器中使用,通過JavaScript與WebSocket進行通信。

要在Web瀏覽器中使用OCX控件與WebSocket進行通信,需要使用一些中間件或框架來使二者兼容。一種常見的方法是使用JavaScript和HTML5來實現(xiàn)與WebSocket通信的功能,并在需要時通過JavaScript與OCX控件進行交互。

為了使OCX控件與WebSocket通信,需要在JavaScript代碼中使用WebSocket API來建立連接、發(fā)送和接收數(shù)據(jù)等操作。同時,通過調(diào)用OCX控件的方法或設(shè)置其屬性,可以在瀏覽器中顯示OCX控件的功能和結(jié)果。

總結(jié)來說,OCX和WebSocket是兩種不同的技術(shù),但可以通過一些中間件或框架實現(xiàn)它們之間的通信。通過在瀏覽器中使用JavaScript和HTML5的WebSocket API,可以與OCX控件進行交互,實現(xiàn)自定義的功能和實時通信。

“相關(guān)推薦”對你有幫助么?

非常沒幫助

沒幫助

一般

有幫助

非常有幫助

提交

github/gongluck

CSDN認證博客專家

CSDN認證企業(yè)博客

碼齡8年

暫無認證

97

原創(chuàng)

6萬+

周排名

111萬+

總排名

30萬+

訪問

等級

3865

積分

106

粉絲

103

獲贊

34

評論

407

收藏

私信

關(guān)注

熱門文章

Boost asio 官方教程

35565

Brpc學(xué)習(xí):簡單回顯服務(wù)器/客戶端

16525

OCX 入門

15515

打開文件open()函數(shù)的使用方法詳解

14663

文件操作(偏移量)

12057

分類專欄

QML

1篇

UNIX網(wǎng)絡(luò)編程(卷1)學(xué)習(xí)筆記

20篇

FFmpeg菜雞互啄

7篇

UNIX網(wǎng)絡(luò)編程(卷2)學(xué)習(xí)筆記

4篇

boost學(xué)習(xí)

2篇

python筆記

14篇

C/C++

32篇

python

14篇

Linux

39篇

Windows

35篇

GUI

7篇

Qt

4篇

Media

20篇

Database

4篇

Lua

1篇

Cocos2d-x

9篇

others

4篇

最新評論

Boost asio 官方教程

一碼農(nóng):

請教下,調(diào)用io_service.run后才將控制權(quán)交給操作系統(tǒng),那為什么timer線程一定義就開始計時了?有沒有可能在調(diào)用run之前很多異步任務(wù)已經(jīng)完成了?run方法的作用僅僅是阻塞嗎?還是說不掉用run有些操作就無法執(zhí)行?如果僅僅是阻塞那我不調(diào)用run,調(diào)用getchar之類的阻塞函數(shù)可以嗎?

Boost asio 官方教程

keyuyukuaiee:

寫的非常容易理解,謝謝作者

c語言中函數(shù)參數(shù)處理順序-從右向左

「已注銷」:

直接看傻了

媒體控制接口(MCI)的學(xué)習(xí)與使用

GETexas:

看到了,眼瞎

媒體控制接口(MCI)的學(xué)習(xí)與使用

GETexas:

控制mci視頻播放器大小倒沒說,只能用windows函數(shù)

您愿意向朋友推薦“博客詳情頁”嗎?

強烈不推薦

不推薦

一般般

推薦

強烈推薦

提交

最新文章

C++實現(xiàn)循環(huán)數(shù)組/隊列

Linux服務(wù)器開發(fā)&音視頻技術(shù)整理、學(xué)習(xí)筆記

hugo搭建的個人博客

2021年1篇

2020年3篇

2018年33篇

2017年113篇

2016年19篇

目錄

目錄

分類專欄

QML

1篇

UNIX網(wǎng)絡(luò)編程(卷1)學(xué)習(xí)筆記

20篇

FFmpeg菜雞互啄

7篇

UNIX網(wǎng)絡(luò)編程(卷2)學(xué)習(xí)筆記

4篇

boost學(xué)習(xí)

2篇

python筆記

14篇

C/C++

32篇

python

14篇

Linux

39篇

Windows

35篇

GUI

7篇

Qt

4篇

Media

20篇

Database

4篇

Lua

1篇

Cocos2d-x

9篇

others

4篇

目錄

評論?1

被折疊的??條評論

為什么被折疊?

到【灌水樂園】發(fā)言

查看更多評論

添加紅包

祝福語

請?zhí)顚懠t包祝福語或標題

紅包數(shù)量

紅包個數(shù)最小為10個

紅包總金額

紅包金額最低5元

余額支付

當前余額3.43元

前往充值 >

需支付:10.00元

取消

確定

下一步

知道了

成就一億技術(shù)人!

領(lǐng)取后你會自動成為博主和紅包主的粉絲

規(guī)則

hope_wisdom 發(fā)出的紅包

實付元

使用余額支付

點擊重新獲取

掃碼支付

錢包余額

0

抵扣說明:

1.余額是錢包充值的虛擬貨幣,按照1:1的比例進行支付金額的抵扣。 2.余額無法直接購買下載,可以購買VIP、付費專欄及課程。

余額充值

如何解讀微軟的 OCX 控件和 ActiveX? - 知乎

如何解讀微軟的 OCX 控件和 ActiveX? - 知乎首頁知乎知學(xué)堂發(fā)現(xiàn)等你來答?切換模式登錄/注冊科技微軟解讀如何解讀微軟的 OCX 控件和 ActiveX?關(guān)注者21被瀏覽29,448關(guān)注問題?寫回答?邀請回答?好問題 2?添加評論?分享?6 個回答默認排序Studio TBsoft?化學(xué)話題下的優(yōu)秀答主? 關(guān)注微軟COM/OLE/ActiveX技術(shù)大致發(fā)展脈絡(luò):基礎(chǔ)技術(shù):COM(組件對象模型),一種語言無關(guān)(二進制調(diào)用協(xié)議)的面向?qū)ο竽P?,Windows注冊表在Win16時代即隨COM技術(shù)引入。第一個典型應(yīng)用:復(fù)合文檔、對象嵌入與在位激活,均成為OLE 2.0最初的一部分。OLE 2.0體系成型:加入對象鏈接支持,即COM名字對象(Moniker)和IMoniker接口支持,OLE即“對象鏈接與嵌入”。支持使用腳本語言調(diào)用COM組件對象:OLE自動化技術(shù),即IDispatch接口支持(相當于當時的一種語言無關(guān)Reflection功能的實現(xiàn)),這是Office宏支持和VBA技術(shù)的基礎(chǔ),VB 3.0開始支持OLE自動化。OLE控件:實際是支持IDispatch接口和可連接對象(事件連接點,事件引發(fā))的小型DLL形式OLE嵌入對象組件,可看作是OLE對象嵌入、OLE自動化等技術(shù)的結(jié)合,作為Windows軟件開發(fā)中的跨語言可復(fù)用組件,首次用于VB 4.0和VC 4.0。OLE控件的擴展名就是OCX(即“OLE控件擴展”),本身是一種DLL(動態(tài)鏈接庫)。ActiveX:微軟IE 3.0瀏覽器推出后,COM和OLE 2.0有微小發(fā)展,用到了IE以及IE中的HTML網(wǎng)頁中,統(tǒng)稱ActiveX技術(shù)。ActiveX部件:就是COM組件,DLL形式的可以稱ActiveX DLL,EXE形式的可以稱ActiveX EXE。可被VBScript(微軟IE瀏覽器中對JS的替代技術(shù),Windows自身也支持,相當于Windows下的Python)等腳本語言調(diào)用的ActiveX部件:支持IDispatch接口(OLE自動化)的COM組件。ActiveX控件:OLE控件的進一步發(fā)展,稍輕量化,可用于IE瀏覽器中的HTML網(wǎng)頁中,可從Internet自動下載到本地執(zhí)行,IE中對Java Applet的替代技術(shù)。一般ActiveX控件與OLE控件差別不大,擴展名仍然是OCX,當然ActiveX控件也一定是COM組件,ActiveX控件更大作用仍是作為Windows軟件開發(fā)中的跨語言可復(fù)用組件,VB 5.0和VC 5.0開始支持ActiveX控件。ActiveX文檔(服務(wù)器):OLE對象嵌入服務(wù)器的進一步發(fā)展,作為IE瀏覽器的一種擴展,可用于在IE瀏覽器中打開其它軟件存儲在Internet服務(wù)器上的文檔,典型例子是Office 97之后版本和Acrobat(Adobe)的PDF閱讀器。遠程自動化與DCOM技術(shù):遠程自動化是通過局域網(wǎng)遠程調(diào)用支持IDispatch接口(OLE自動化)COM組件或者ActiveX部件的技術(shù),后來發(fā)展為DCOM技術(shù),可通過局域網(wǎng)調(diào)用一般COM組件或者ActiveX部件。MTS:Windows NT 4.0后期版本(隨IIS 4.0提供)為COM組件提供的一種附加企業(yè)組件服務(wù),即分布式事務(wù)處理服務(wù),COM組件開始可以作為企業(yè)應(yīng)用中間件組件。COM+ 1.0:Windows 2000(Windows NT 5.0)中MTS的進一步發(fā)展,為COM組件提供了更多的附加企業(yè)組件服務(wù),例如分布式事務(wù)處理、消息隊列等,并整合了DCOM技術(shù),使得COM組件完全可以用作企業(yè)應(yīng)用中間件,COM到COM+ 1.0,相當于Java Bean到EJB。COM+ 2.0:就是.NET Framework 1.0的微軟內(nèi)部開發(fā)代號。Enterprise Services:COM+企業(yè)組件服務(wù)(僅單指企業(yè)組件服務(wù))在.NET Framework中的稱呼。編輯于 2023-01-22 18:56?贊同 40??10 條評論?分享?收藏?喜歡收起?知乎用戶還解讀ActiveX?都光緒年間的工藝了,現(xiàn)在除了Windows 和Office的大量legacy code 沒有誰在大量使用ActiveX了。發(fā)布于 2023-01-24 02:07?贊同 2??1 條評論?分享?收藏?喜歡

將 OCX 和 DLL 文件注冊為系統(tǒng)全局 - Windows Client | Microsoft Learn

將 OCX 和 DLL 文件注冊為系統(tǒng)全局 - Windows Client | Microsoft Learn

跳轉(zhuǎn)至主內(nèi)容

此瀏覽器不再受支持。

請升級到 Microsoft Edge 以使用最新的功能、安全更新和技術(shù)支持。

下載 Microsoft Edge

有關(guān) Internet Explorer 和 Microsoft Edge 的詳細信息

目錄

退出焦點模式

使用英語閱讀

保存

目錄

使用英語閱讀

保存

打印

Twitter

LinkedIn

Facebook

電子郵件

目錄

將 OCX 和 DLL 文件注冊為系統(tǒng)全局

項目

12/26/2023

3 個參與者

反饋

本文內(nèi)容

本文介紹如何將 OCX 和 DLL 文件注冊為系統(tǒng)全局文件。

適用于:Windows 10 - 所有版本

原始 KB 編號: 186597

摘要

安裝或運行應(yīng)用程序時可能會收到錯誤,指出需要將 OCX 文件或 DLL 文件注冊為系統(tǒng)全局。 記下需要注冊的文件。

OCX 文件

在 VGA 模式下啟動服務(wù)器。

需要使用Regsvr.exe、Regsvr16.exe (16 位) 或 Regsvr32.exe (32 位) 命令將 OCX 文件注冊為系統(tǒng)全局。 安裝 Visual Basic 或 Visual FoxPro 時,這些命令將包含在開發(fā)工具包中。

根據(jù)應(yīng)用程序,可能需要以這種方式注冊多個 OCX 文件。

DLL 文件

若要將 DLL 注冊為系統(tǒng)全局,請轉(zhuǎn)到 SYSTEM32 目錄并找到錯誤消息中提到的 DLL。 注冊名為 Sample.dll 的文件的命令是:

REGISTER /S SAMPLE.DLL

僅當加載程序時,才會識別程序的注冊數(shù)據(jù)。 因此,如果為已加載的程序發(fā)出 REGISTER 命令,則更改要到下次加載程序時才會生效。

另請注意,只有管理員才能運行 REGISTER。

反饋

此頁面是否有幫助?

提供產(chǎn)品反饋

反饋

Coming soon: Throughout 2024 we will be phasing out GitHub Issues as the feedback mechanism for content and replacing it with a new feedback system. For more information see: https://aka.ms/ContentUserFeedback.

提交和查看相關(guān)反饋

此產(chǎn)品

此頁面

查看所有頁面反饋

其他資源

加州消費者隱私法案 (CCPA) 禁用圖標

你的隱私選擇

主題

高對比度

早期版本

博客

參與

隱私

使用條款

商標

? Microsoft 2024

其他資源

本文內(nèi)容

加州消費者隱私法案 (CCPA) 禁用圖標

你的隱私選擇

主題

高對比度

早期版本

博客

參與

隱私

使用條款

商標

? Microsoft 2024

百度安全驗證

百度安全驗證

網(wǎng)絡(luò)不給力,請稍后重試

返回首頁

問題反饋

怎么對.ocx格式控件進行注冊加載? - 知乎

怎么對.ocx格式控件進行注冊加載? - 知乎首發(fā)于電腦蝦切換模式寫文章登錄/注冊怎么對.ocx格式控件進行注冊加載?月下乘風(fēng)努力努力,在努力很多用戶在安裝使用軟件時,會要求注冊加載一個.ocx格式的控件,否則軟件程序就無法運行。有的用戶在注冊這個控件時還會出現(xiàn)錯誤,提示對DllRegisterServer調(diào)用失敗,錯誤代碼為0x8002801c。那么遇到這些情況我們該怎么去解決呢?下面就來和大家分享一下具體的解決方法。注冊加載.ocx文件的方法1、在網(wǎng)上下載好相應(yīng)名稱的.ocx格式控件(這里以ComCtl32.ocx為例,具體名稱看軟件提示)。2、根據(jù)自己電腦系統(tǒng)的位數(shù)將這個控件放入不同的文件夾內(nèi),32位系統(tǒng)的放入C:\Windows\System32文件夾內(nèi),64位系統(tǒng)的放入C:\Windows\SysWOW64文件夾內(nèi)。3、接下來有兩種方法可以對這個.ocx格式的控件進行注冊加載,一種是右鍵點擊該.ocx文件,選擇“打開方式”,然后點擊“在這臺電腦上查找其他應(yīng)用”,在.ocx所在的文件夾內(nèi)搜索regsvr32.exe,選中再打開即可。4、另外一種是以管理員的身份運行cmd.exe,Win10系統(tǒng)可以在左下角搜索欄搜索cmd.exe,然后右鍵點擊該結(jié)果,選擇“以管理員身份運行”;Win7系統(tǒng)就打開開始菜單,然后搜索cmd.exe,右鍵點擊該結(jié)果,選擇“以管理員身份運行”。5、在打開的命令窗口中復(fù)制輸入以下代碼(注意文件路徑和文件名稱要匹配),然后按下回車鍵,命令運行后就會提示Dllregisterserver調(diào)用成功,這樣就可以了。代碼:32位系統(tǒng):“regsvr32 c:\Windows\system32\comctl32.ocx” 64位系統(tǒng):“regsvr32 c:\Windows\SysWOW64\comctl32.ocx”Dllregisterserver調(diào)用失敗,出現(xiàn)錯誤0x8002801c的解決方法這個問題一般是因為沒有管理員權(quán)限造成的,只要在以管理員身份運行的cmd.exe中輸入以上代碼即可。按照上面的方法步驟進行操作,.ocx格式控件文件就可以注冊加載成功,也不會出現(xiàn)Dllregisterserver調(diào)用失敗,出現(xiàn)0x8002801c的錯誤了。遇到這個問題的朋友快去試試吧。文章轉(zhuǎn)自:如何注冊.ocx文件?出現(xiàn)錯誤0x8002801c怎么辦?-裝機教程-好系統(tǒng)重裝助手官網(wǎng)發(fā)布于 2018-06-23 12:03電腦知識個人電腦應(yīng)用程序(軟件)?贊同 7??4 條評論?分享?喜歡?收藏?申請轉(zhuǎn)載?文章被以下專欄收錄電腦蝦介紹電腦使用小技巧,提供電腦問題解

OCX控件的創(chuàng)建與調(diào)用_ocx param-CSDN博客

>

OCX控件的創(chuàng)建與調(diào)用_ocx param-CSDN博客

OCX控件的創(chuàng)建與調(diào)用

最新推薦文章于?2021-12-12 12:52:26?發(fā)布

小哈龍

最新推薦文章于?2021-12-12 12:52:26?發(fā)布

閱讀量1.3w

收藏

26

點贊數(shù)

3

分類專欄:

windows c/c++

文章標簽:

OCX

windows c/c++

專欄收錄該內(nèi)容

304 篇文章

47 訂閱

訂閱專欄

1.ActiveX的基本概念

?????????ActiveX控件可以看作是一個極小的服務(wù)器應(yīng)用程序,它不能獨立運行,必須嵌入到某個容器程序中,與該容器一起運行。這個容器包括WEB網(wǎng)頁,應(yīng)用程序窗體等。。。

???????? ActiveX控件的后綴名是OCX或者DLL。一般是以O(shè)CX和動態(tài)庫共存的形式打包成cab或者exe的文件放在服務(wù)器上,客戶端下載后運行安裝cab或exe解壓成OCX和動態(tài)庫共存的文件,然后注冊ocx文件。

???????? ActiveX控件是基于com標準,使得軟件部件在網(wǎng)絡(luò)環(huán)境中進行交互的技術(shù)集。它與具體的編程語言無關(guān)。作為針對Internet應(yīng)用開發(fā)的技術(shù),ActiveX被廣泛應(yīng)用于WEB服務(wù)器以及客戶端的各個方面。同時,ActiveX技術(shù)也被用于方便地創(chuàng)建普通的桌面應(yīng)用程序,此外ActiveX一般具有界面。

?

2.三個概念:ActiveX、OLE和COM

??????? 從時間的角度講,OLE是最早出現(xiàn)的,然后是COM和 ActiveX;從體系結(jié)構(gòu)角度講,OLE和ActiveX是建立在COM之上的,所以COM是基礎(chǔ);單從名稱角度講,OLE、ActiveX是兩個商標名稱,而COM則是一個純技術(shù)名詞,這也是大家更多的聽說ActiveX和OLE的原因。COM是應(yīng)OLE的需求而誕生的,所以雖然COM是OLE的基礎(chǔ),但OLE的產(chǎn)生卻在COM之前。COM的基本出發(fā)點是,讓某個軟件通過一個通用的機構(gòu)為另一個軟件提供服務(wù)。ActiveX最核心的技術(shù)還是COM。ActiveX和OLE的最大不同在于,OLE針對的是桌面上應(yīng)用軟件和文件之間的集成,而 ActiveX則以提供進一步的網(wǎng)絡(luò)應(yīng)用與用戶交互為主。COM對象可以用C++、Java和VB等任意一種語言編寫,并可以用DLL或作為不同過程工作的執(zhí)行文件的形式來實現(xiàn)。使用COM對象的瀏覽器,無需關(guān)心對象是用什么語言寫的,也無須關(guān)心它是以DLL還是以另外的過程來執(zhí)行的。從瀏覽器端看,無任何區(qū)別。這樣一個通用的處理技巧非常有用。

?

3.ActiveX控件工程的創(chuàng)建

?????? 使用VS2010有兩種方式可以創(chuàng)建ActiveX工程,

第一種:創(chuàng)建“MFC ActiveX 控件”工程;

第二種:創(chuàng)建“ATL 項目”。由于使用ATL開發(fā)ActiveX控件需要了解com技術(shù),對程序員的要求也較高,開發(fā)時間也較長,所以如果ActiveX只在windows操作系統(tǒng)下運行,那么就使用“MFC ActiveX 控件”工程來快速建立ActiveX控件。但是這里要注意了:使用“MFC ActiveX 控件”工程來快速建立ActiveX控件,他不僅要建立在windows操作系統(tǒng)下,還必須在windows操作系統(tǒng)下安裝c++依賴庫安裝包,因為MFC是建立在微軟的c++動態(tài)庫的基礎(chǔ)上的。所以這兩種方式各有優(yōu)缺點,根據(jù)項目需求來選擇適合的方式。

?

4.使用VS2010創(chuàng)建MFC ActiveX工程項目步驟

???????? 由于使用ATL進行ActiveX工程的創(chuàng)建難度比較大,所以這里先使用“MFC ActiveX 控件”工程來創(chuàng)建一個簡單的ActiveX控件。

?????? 第一:新建項目-》選擇“MFC ActiveX 控件”工程,給項目命名TestMfcAtlDebug,點擊確定,彈出“控件向?qū)А睂υ捒?/p>

??????? 第二:在概述,應(yīng)用程序設(shè)置,控件名稱和控件設(shè)置都可以選擇默認,然后點擊“完成”,這樣“MFC ActiveX 控件”工程創(chuàng)建完成

?

5.分析“MFC ActiveX 控件”工程的三個重要的類以及對外接口定義文件idl

使用向?qū)?chuàng)建完工程可以看到自動生成了三個類,TestMfcAtlDebug,TestMfcAtlDebugCtrl和TestMfcAtlDebugPropPage

可以打開上面三個類的頭文件及cpp文件,發(fā)現(xiàn)它們都是派生類。

TestMfcAtlDebug:cpp文件中定義了DllRegisterServer和DllUnregisterServer,可以發(fā)現(xiàn)ActiveX的注冊和反組冊都與該類有關(guān)。

TestMfcAtlDebugCtrl:可以發(fā)現(xiàn)該頭文件中聲明了消息映射(讓ActiveX控件程序可以接受系統(tǒng)發(fā)送的事件通知,如窗體創(chuàng)建和關(guān)閉事件),調(diào)度映射(讓外部調(diào)用程序(包含ActiveX的容器)可以方便地訪問ActiveX控件的屬性和方法),事件映射(讓ActiveX控件可以向外部調(diào)用程序(包含ActiveX的容器)發(fā)送事件通知)。也就是說對ActiveX控件的窗口操作都將在這個類中完成,包括ActiveX控件的創(chuàng)建,重繪,以及在此類中創(chuàng)建可視MFC窗體。

TestMfcAtlDebugPropPage:顯示ActiveX控件的屬性頁的

?

讓我們來看看最重要的部分:對外接口定義文件TestMfcAtlDebug.idl,代碼如下:

#include???

#include???

??

[?uuid(69EE37F4-8B36-495F-9F60-5E3AAF2FB494),?version(1.0),??

??control?]??

library?TestMfcAtlDebugLib??

{??

????importlib(STDOLE_TLB);??

??

????//??CTestMfcAtlDebugCtrl?的主調(diào)度接口??

????[???

????????uuid(6B60346D-5CCD-4907-83F4-51938558A9B7)????

????]??

????dispinterface?_DTestMfcAtlDebug??

????{??

????????properties:??

????????methods:??

??

????????????[id(DISPID_ABOUTBOX)]?void?AboutBox();??

????};??

??

????//??CTestMfcAtlDebugCtrl?的事件調(diào)度接口??

??

????[???

????????uuid(E26ECC46-9BA2-4C25-A4DD-A690560A5113)????

????]??

????dispinterface?_DTestMfcAtlDebugEvents??

????{??

????????properties:??

????????????//??事件接口沒有任何屬性??

??

????????methods:??

????};??

??

????//??CTestMfcAtlDebugCtrl?的類信息??

????[??

????????uuid(DD0CF7EF-A181-428C-B5FC-C44A1C13CA43)??

????]??

????coclass?TestMfcAtlDebug??

????{??

????????[default]?dispinterface?_DTestMfcAtlDebug;??

????????[default,?source]?dispinterface?_DTestMfcAtlDebugEvents;??

????};??

??

};??

這個就是對外接口定義文件,如果外部程序想要調(diào)用ActiveX的方法,屬性以及在注冊表注冊的classid(WEB網(wǎng)頁調(diào)用需要使用),就必須了解這個文件,這個文件可以分為四個部分來看:

首先是TestMfcAtlDebug.Lib這個庫信息

這個就不做詳解

第二部分是調(diào)度映射的接口信息,該接口信息包含了屬性(如控件背景色)和對外方法

里面定義了一個方法AboutBox(),該方法就可以被外部程序調(diào)用,在該接口里定義的函數(shù)都是純虛函數(shù),這些函數(shù)的實現(xiàn)都是在TestMfcAtlDebugCtrl中完成的,MFC通過底層的封裝,讓TestMfcAtlDebugCtrl類繼承這個接口,實現(xiàn)函數(shù)。

第三部分是事件映射的接口信息

第四部分是類的信息,其中uuid就是ActiveX控件注冊到注冊表的classid,它是ActiveX注冊后在系統(tǒng)內(nèi)的唯一標識,WEB網(wǎng)頁就是使用這個ID加載ActiveX控件的

?

6.定義調(diào)度映射和事件映射方法,提供給外部調(diào)用者使用 那么怎么定義新的調(diào)度映射和事件映射方法呢,如果手動定義很不方便,當然使用編譯器進行定義,步驟是打開類視圖:

可以看到TestMfcAtlDebugLib中有_DTestMfcAtlDebug和_DTestMfcAtlDebugEvents,在_DTestMfcAtlDebug項中可以右鍵-》添加方法(或?qū)傩裕?,該操作是完成調(diào)度映射的方法和屬性的添加;在_DTestMfcAtlDebugEvents項中可以右鍵-》添加方法(或?qū)傩裕?,該操作是完成事件映射的方法和屬性的添加?/p>

舉個例子,如果要添加一個調(diào)度映射的方法Fuck2(),使得外部可以調(diào)用:

在_DTestMfcAtlDebug項中可以右鍵-》添加方法,設(shè)置框

填寫完信息后點擊完成,外部就可以調(diào)用方法Fuck2,同時ActiveX控件項目代碼的內(nèi)部將會在三個文件中新增代碼:

1.在

2.在

3.在

?

7.注冊ActiveX控件

按照上面的步驟已經(jīng)完成簡單ActiveX控件(無窗體界面的控件)的編寫,重新生成后會在Debug下生成一個TestMfcAtlDebug.ocx的文件,使用windows的dos窗口可以注冊這個ActiveX控件

步驟:

首先win+R鍵打開運行,然后輸入注冊命令:regsvr32? c:\.......\TestMfcAtlDebug.ocx(反注冊命令:regsvr32? c:\.......\TestMfcAtlDebug.ocx -u)

有兩種情況會導(dǎo)致控件注冊失敗:

第一種:使用非Administrator用戶登入系統(tǒng)會由于權(quán)限不足而無法注冊com組件,這時候就必須使用Administrator用戶登入操作系統(tǒng)

第二種:ActiveX控件所依賴的dll庫被程序給占用,就會導(dǎo)致注冊失敗,解決辦法是將正在運行的程序關(guān)閉就可以

?

?8.測試ActiveX控件的方法

按照上面的步驟已經(jīng)完成ActiveX控件的編寫,也將這個控件注冊成功了,那么怎么測試這個控件呢,有三種方式:

第一種:使用html網(wǎng)頁來測試

在TestMfcActiveX.htm的文件中編寫代碼如下:

[html]?view plaincopy

????Test?ActiveX??????????????????????????????????

注意上面的classid就是在idl文件中類的uuid,然后打開這個網(wǎng)頁就會顯示ActiveX控件。上面的classid在控件成功注冊后也可以通過注冊表查找,具體方法是win+R鍵,輸入regedit命令,就會彈出“注冊表編輯器”,位置在“HKET_CLASSES_ROOT”中,根據(jù)你控件的名稱,快速按下前三個字母,然后就可以定位到比較好找的位置,如下圖

第二種:建立Mfc應(yīng)用程序,在Mfc窗口右鍵-》插入“ActiveX”控件,然后就會在MFC的窗體上顯示ActiveX控件

第三種:也是最方便的一種方法,就是使用vs自帶的ActiveX Control Test Container來測試ActiveX控件,但是VS2010在“工具”中沒有這一項,那么我們首先可以手動把這個工具添加到VS2010里,首先找到C:\Program Files\Microsoft Visual Studio 10.0\Samples\2052\C++\MFC\ole\TstCon\TstCon.sln,然后使用VS2010打開解決方案TstCon.sln,編譯項目TCProps和TstCon,編譯完成后會在C:\Program Files\Microsoft Visual Studio 10.0\Samples\2052\C++\MFC\ole\TstCon\Debug\中生成TstCon.exe執(zhí)行程序,這個執(zhí)行程序就是ActiveX Control Test Container,接下來我們就在VS2010中的工具中添加這個TstCon.exe,在VS2010中的“工具”菜單項中選擇“外部工具”,在彈出的窗體中添加一個新的工具,標題為ActiveX Control Test Container,命令為C:\Program Files\Microsoft Visual Studio 10.0\Samples\2052\C++\MFC\ole\TstCon\Debug\TstCon.exe,然后點擊確定就可以完成工具的添加了。

?

?這樣,在“工具”中就有了一個ActiveX Control Test Container,點擊它就會彈出測試ActiveX的容器,如下圖

點擊Edit->Insert New Control->選擇TestMfcAtlDebug Control,點擊OK

然后就會顯示這個注冊后的AcitveX控件,如果要測試這個控件的調(diào)度映射的方法Fuck2,就先選中控件,然后點擊Control-》Invoke Methods,在Methods Name下拉框中選擇Fuck2這個方法,點擊Invoke按鈕就可以測試這個方法了,如下圖:

我們可以看到上面的ActiveX控件是一個空白的背景和一個圈組成的,并沒有窗體界面,那么怎么添加窗體呢?

?

9.向ActiveX控件中添加一個Mfc窗體,就是一個帶界面的ActiveX控件

?步驟:

第一:在資源視圖中新建一個對話框資源

去掉上邊的“確定”和“取消”按鈕,然后修改對話框?qū)傩裕築order改為None,Control改為Ture,ID改為IDD_MAIN_DIALOG,Style改為Child,System改為False,Visible改為True,然后在對話框中雙擊,為對話框添加一個類,如下圖:

?

點擊“完成”。在解決方案資源管理器中新增了一個ViewDialog.h和ViewDialog.cpp這個ViewDialog類就是剛剛我們建立的對話框類

然后拖一個Edit Control到對話框上,修改其ID為IDC_EDIT_OUTPUT,再拖一個Button到對話框上,此時對話框效果為:

?對話框建立完成,接下來就是要把它添加到ActiveX控件中去

?

第二:在TestMfcAtlDebugCtrl.h中定義對話框?qū)嵗齧_VideoDlg

?然后在TestMfcAtlDebugCtrl類中定義兩個消息映射:窗體創(chuàng)建完成消息映射和窗體改變大小消息映射

在VS2010的菜單項“項目”--》“類向?qū)А敝?,選擇要添加到的項目和類中,選擇“消息”選項卡,選擇WM_CREATE后點擊”添加處理程序“按鈕和選擇WM_SIZE

后點擊”添加處理程序“,這樣在“現(xiàn)有的處理程序”中就有OnCreate和OnSize這兩個函數(shù),點擊確定,完成消息映射函數(shù)的添加,如圖:

?在TestMfcAtlDebugCtrl.cpp中自動添加下列代碼,如圖:

?在OnCreate函數(shù)中編寫如下代碼(Create是在ActiveX控件中創(chuàng)建一個窗體對話框,IDD_VIEW_DIALOG就是剛剛新建的對話框):

?在OnSize函數(shù)編寫代碼如下(MoveWindow是確定窗體對話框在ActiveX中的大小):

?

?第三:重新編譯,注冊ocx,使用ActiveX Control Test Container再次測試該控件

?可以發(fā)現(xiàn)這個ActiveX控件中已經(jīng)有了界面了

優(yōu)惠劵

小哈龍

關(guān)注

關(guān)注

3

點贊

26

收藏

覺得還不錯?

一鍵收藏

知道了

1

評論

OCX控件的創(chuàng)建與調(diào)用

1.ActiveX的基本概念A(yù)ctiveX控件可以看作是一個極小的服務(wù)器應(yīng)用程序,它不能獨立運行,必須嵌入到某個容器程序中,與該容器一起運行。這個容器包括WEB網(wǎng)頁,應(yīng)用程序窗體等。。。 ActiveX控件的后綴名是OCX或者DLL。一般是以O(shè)CX和動態(tài)庫共存的形式打包成cab或者exe的文件放在服務(wù)器上,客戶端下載后運行安裝cab或exe解壓成OCX和動...

復(fù)制鏈接

掃一掃

專欄目錄

??禂z像頭OCX控件接口+網(wǎng)頁demo

10-11

海康威視的攝像頭在網(wǎng)頁中進行集成時候需要安裝OCX控件,此資源為exe版本,安裝之后打開index.html這個demo文件。會提示下載安裝cab,再次點擊安裝,即可使用。index.html這個demo中提供了??禂z像頭集成的大部分功能,為大家提供參考。

海康威視攝像頭OCX控件

08-27

??低晹z像頭OCX控件,可以顯示攝像頭圖像、抓取圖像、保存圖像等,在C#、VB、組態(tài)王中都可以使用。

帶:OCX控件接口說明(V2.3).doc

1?條評論

您還未登錄,請先

登錄

后發(fā)表或查看評論

c++ ActiveX基礎(chǔ)1:使用VS2010創(chuàng)建MFC ActiveX工程項目

熱門推薦

爛筆頭的專欄

01-30

7萬+

1.ActiveX的基本概念

?????????ActiveX控件可以看作是一個極小的服務(wù)器應(yīng)用程序,它不能獨立運行,必須嵌入到某個容器程序中,與該容器一起運行。這個容器包括WEB網(wǎng)頁,應(yīng)用程序窗體等。。。

???????? ActiveX控件的后綴名是OCX或者DLL。一般是以O(shè)CX和動態(tài)庫共存的形式打包成cab或者exe的文件放在服務(wù)器上,客戶端下載后運行安裝cab或exe解壓成OCX和動

C#開發(fā)ActiveX控件及控件的發(fā)布

12-01

C#開發(fā)ActiveX控件及控件的發(fā)布,很詳細,自己整理的,和網(wǎng)上的差不多,但是自己根據(jù)操作工程中遇到的問題,修改了一下。有圖有真相

??低暯M態(tài)王OCX控件DLL文件集.rar

09-05

軟件介紹:

??低暯M態(tài)王OCX控件支持最新版本的??典浵駲C,具備登錄、退出、播放、停止播放,抓BMP圖片和存儲路徑設(shè)置等功能。適用于WIN7,WIN10目前沒有測試通過。可以作為組態(tài)王的OCX控件。NETVIDEO控件包:ClientDemoDllHCNetSDKComAudioRender.dllD3DCompiler_43.dllD3DX9_43.dllEagleEyeRender.dllgdiplus.dllHCCore.dllHCNetSDK.dllHKNETVIDEO.ocxHWDecode.dllMP_Render.dllMP_VIE.dllPlayCtrl.dllSuperRender.dllYUVProcess.dll

組態(tài)王 海康威視 視頻控件

04-23

??低?,組態(tài)王HKDVR.ocx控件DLL文件集,組態(tài)王6.55版本測試過,好用,還有使用說明

OCX 入門

gongluck93的博客

03-21

1萬+

OCX入門:http://blog.csdn.net/hkcsdn/article/details/52908748

前言

ActiveX是Microsoft對于一系列策略性面向?qū)ο蟪绦蚣夹g(shù)和工具的稱呼,其中主要的技術(shù)是組件對象模型(COM)。

??ActiveX控件是一種實現(xiàn)了一系列特定接口而使其在使用和外觀上更象一個控件的COM組件。ActiveX控件這種技術(shù)涉及到了幾乎所有的C

ocx開發(fā)經(jīng)驗,ActiveX開發(fā)快速入門

xiaoxiaoyu85的專欄

12-12

7862

1. ocx下載解壓的目標位置,由注冊表項指定

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\ActiveX Cache

默認為C:\WINDOWS\Downloaded Program Files

inf文件也解壓到該目錄

下載的ocx在資源管理器中不可見,使用dir命令可見??梢允褂胏opy

ActiveX基礎(chǔ)——什么是ActiveX

a51897768的博客

04-03

735

一種Internet策略 ActiveX是以一種Internet策略出現(xiàn)的。它包含了OLE,COM及Internet開發(fā)的各個方面。

ActiveX開發(fā)涉及范圍廣泛 ActiveX開發(fā)的包含了許多方面,比如自動化服務(wù)器,ActiveX控件,COM對象等等。

術(shù)語ActiveX在過去的幾年中成為了許多開發(fā)人員及團隊的戰(zhàn)斗口號,另一方面市場也對其大肆宣...

ocx入門淺析

kevin的博客

12-20

4萬+

1.exe,ocx,dll的區(qū)別

分析:exe是一個可執(zhí)行程序,而ocx看做是一個窗口上的控件(控件即ocx,如button),dll是將函數(shù)、變量、類封裝在一起的庫

ocx的形式如下:

圖中的各個都是ocx控件(我是這樣認為的),只不過MFC內(nèi)置了一些控件,但是如果是自己寫的ocx控件,程序運行時必須將生成的ocx控件拷到可執(zhí)行目錄下

2.ocx特點(根據(jù)普通的butto

基于C#調(diào)用OCX控件的常用方法(推薦)

08-28

下面小編就為大家分享一篇基于C#調(diào)用OCX控件的常用方法推薦,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

c#調(diào)用vc寫的ocx控件示例

09-04

主要介紹了c#調(diào)用vc寫的ocx控件示例,需要的朋友可以參考下

chrome 調(diào)用ocx控件

12-28

chrome調(diào)用ocx控件, 安裝此插件可以調(diào)用身份證閱讀器

Qt/C++中使用OCX控件的調(diào)用方法及事件處理代碼實例

04-28

Qt/C++中使用OCX控件的調(diào)用方法及...代碼實例簡單的調(diào)用了OCX提供的函數(shù),和OCX事件處理(采用了信號與槽的方式),調(diào)用qt的方法獲取列出所有ocx控件的所有信號、函數(shù)、屬性等。 謝謝大家的分享和分數(shù),我很需要它們。

java調(diào)用ocx控件,jacob,jar和dll文件

01-20

java調(diào)用ocx控件,jacob,jar和dll文件

Java畢設(shè)-基于springboot+Vue的流浪動物管理系統(tǒng)2(附源碼,數(shù)據(jù)庫,教程).zip

03-06

Java 畢業(yè)設(shè)計,Java 課程設(shè)計,基于 SpringBoot 開發(fā)的,含有代碼注釋,新手也可看懂。畢業(yè)設(shè)計、期末大作業(yè)、課程設(shè)計、高分必看,下載下來,簡單部署,就可以使用。

包含:項目源碼、數(shù)據(jù)庫腳本、軟件工具等,前后端代碼都在里面。

該系統(tǒng)功能完善、界面美觀、操作簡單、功能齊全、管理便捷,具有很高的實際應(yīng)用價值。

項目都經(jīng)過嚴格調(diào)試,確??梢赃\行!

1. 技術(shù)組成

前端:html、javascript、Vue

后臺框架:SpringBoot

開發(fā)環(huán)境:idea

數(shù)據(jù)庫:MySql(建議用 5.7 版本,8.0 有時候會有坑)

數(shù)據(jù)庫工具:navicat

部署環(huán)境:Tomcat(建議用 7.x 或者 8.x 版本), maven

2. 部署

如果部署有疑問的話,可以找我咨詢

后臺路徑地址:localhost:8080/項目名稱/admin/dist/index.html

前臺路徑地址:localhost:8080/項目名稱/front/index.html (無前臺不需要輸入)

Swift 基礎(chǔ)庫. A collection of Swift extensions and utilities.zip

最新發(fā)布

03-06

Swift 基礎(chǔ)庫. A collection of Swift extensions and utilities.zip

剪映使用教程s240306.pptx

03-06

剪映使用教程s240306.pptx

谷歌瀏覽器調(diào)用ocx控件

07-13

### 回答1:

谷歌瀏覽器(Google Chrome)是一款目前應(yīng)用廣泛的網(wǎng)頁瀏覽器,用于訪問互聯(lián)網(wǎng)上的各種網(wǎng)頁內(nèi)容。與其他瀏覽器相比,谷歌瀏覽器具有更快的網(wǎng)頁加載速度、強大的安全性和用戶體驗。

在使用谷歌瀏覽器瀏覽網(wǎng)頁時,有時候我們會遇到需要調(diào)用OCX(Object Control Extension,對象控件擴展)控件的情況。OCX是一種在Windows操作系統(tǒng)上運行的二進制對象控件,與ActiveX控件類似,用于增強瀏覽器的功能。

當谷歌瀏覽器需要調(diào)用OCX控件時,它會按照預(yù)設(shè)的規(guī)則查找并加載相應(yīng)的控件,以確保能夠正確執(zhí)行相應(yīng)的功能。這些OCX控件通常由開發(fā)者或第三方提供,并根據(jù)需要引入谷歌瀏覽器中。一旦OCX控件加載成功,谷歌瀏覽器就能夠使用該控件提供的功能,例如播放音頻、視頻、處理文件上傳等。

在調(diào)用OCX控件時,谷歌瀏覽器會檢查控件的完整性和安全性,以確保它不會對用戶的計算機造成損害。這是出于安全考慮,以防止?jié)撛诘膼阂獯a對用戶的計算機進行攻擊或非法操作。

需要注意的是,有些OCX控件可能不被谷歌瀏覽器支持,或者由于安全限制而不容許使用。在這種情況下,用戶可能需要通過其他方式來完成相應(yīng)的功能,或者嘗試使用其他瀏覽器來滿足需求。

總之,谷歌瀏覽器能夠調(diào)用OCX控件來擴展其功能,提供更好的用戶體驗和網(wǎng)頁交互。這也體現(xiàn)了谷歌瀏覽器的靈活性和開放性,以適應(yīng)不同用戶的需求。

### 回答2:

谷歌瀏覽器不支持直接調(diào)用OCX控件。OCX控件(包括ActiveX控件)是一種用于Windows環(huán)境下的特殊組件,主要用于在網(wǎng)頁中顯示多媒體內(nèi)容或執(zhí)行其他特定任務(wù)。然而,由于谷歌瀏覽器采用了Chromium內(nèi)核,該內(nèi)核與傳統(tǒng)的OCX控件不兼容,因此無法直接調(diào)用OCX控件。

為了解決這個問題,開發(fā)者可以考慮使用其他替代方案。例如,可以使用基于HTML5的原生Web瀏覽器 API來實現(xiàn)類似功能。HTML5提供了一系列的標準API,如Canvas、WebRTC、Web Audio等,可以用于實現(xiàn)圖像處理、音視頻播放等功能,從而不再依賴于OCX控件。

此外,如果必須使用OCX控件,用戶可以考慮切換到支持OCX控件的瀏覽器,如Internet Explorer。在Internet Explorer中,用戶可以直接調(diào)用和使用OCX控件,以實現(xiàn)特定功能。

總之,谷歌瀏覽器無法直接調(diào)用OCX控件,但開發(fā)者可以通過使用HTML5的相關(guān)API或切換到支持OCX控件的瀏覽器來實現(xiàn)類似的功能。

### 回答3:

谷歌瀏覽器可以通過調(diào)用OCX控件實現(xiàn)一些特定功能。OCX(Object Linking and Embedding Control)是一個可重復(fù)使用的軟件組件,它可以被嵌入在其他應(yīng)用程序中,并提供特定的功能。

在谷歌瀏覽器中,當需要使用OCX控件時,首先需要在相關(guān)的網(wǎng)頁或應(yīng)用程序中引用該控件。通過添加控件的相關(guān)代碼,谷歌瀏覽器就能夠了解如何調(diào)用和使用該控件。

一旦OCX控件被調(diào)用,谷歌瀏覽器可以利用該控件的特定功能。例如,如果OCX控件是用于媒體播放的,谷歌瀏覽器就能夠播放網(wǎng)頁上嵌入的音頻或視頻文件。如果OCX控件是用于動畫或特效的,谷歌瀏覽器也能夠展示出這些特效。

谷歌瀏覽器調(diào)用OCX控件的過程是通過調(diào)用接口、方法或事件來實現(xiàn)的。OCX控件會提供一系列的接口或方法,用于與谷歌瀏覽器進行交互。谷歌瀏覽器可以根據(jù)需要調(diào)用這些接口或方法,以實現(xiàn)業(yè)務(wù)邏輯的功能。

總結(jié)來說,谷歌瀏覽器調(diào)用OCX控件是通過添加需要使用的控件代碼,并通過調(diào)用接口、方法或事件等方式與控件進行交互。這樣可以為用戶提供更豐富的瀏覽器功能和體驗。

“相關(guān)推薦”對你有幫助么?

非常沒幫助

沒幫助

一般

有幫助

非常有幫助

提交

小哈龍

CSDN認證博客專家

CSDN認證企業(yè)博客

碼齡9年

暫無認證

237

原創(chuàng)

2萬+

周排名

3540

總排名

327萬+

訪問

等級

2萬+

積分

777

粉絲

1860

獲贊

385

評論

7548

收藏

私信

關(guān)注

熱門文章

匯編語言中OUT和IN的用法

79516

Win10下IIS配置、項目發(fā)布、添加網(wǎng)站

58495

INT 21H 指令說明及使用方法

54167

怎么實現(xiàn)多用戶同時遠程連接到一臺電腦上

53985

Qt Creator 使用技巧(功能快捷鍵如注釋、聲明和實現(xiàn)之間切換)

51508

分類專欄

圖形處理

11篇

CMake

2篇

數(shù)學(xué)

10篇

EDA

1篇

Chromium開源項目

2篇

匯編

58篇

Electron

STL

41篇

can總線

5篇

Boost

1篇

網(wǎng)絡(luò)運維

22篇

OpenCasCade

43篇

電腦設(shè)備

17篇

數(shù)據(jù)庫

77篇

windows c/c++

304篇

系統(tǒng)架構(gòu)師之路

5篇

網(wǎng)絡(luò)編程

33篇

病毒分析

9篇

加殼脫殼

6篇

批處理

8篇

程序人生

9篇

linux

23篇

NSIS

1篇

BPEL

4篇

Java

1篇

正則表達式

2篇

asp.net/mvc

7篇

Opencv

3篇

AI

1篇

IDA

16篇

C#

37篇

linux c/c++

51篇

html/javascript/jquery

3篇

數(shù)據(jù)結(jié)構(gòu)與算法

10篇

DuiLib

11篇

QT

45篇

OpenGL

16篇

Python

4篇

設(shè)計模式

17篇

GDI/GDI+

3篇

最新評論

OpenCasCade——將鼠標點的位置轉(zhuǎn)換為基于OCC三維坐標系中在某一面上的坐標

小哈龍:

這個就是拓撲面轉(zhuǎn)換出來的,在文章中計算拓撲面的法向量時候有提到agpPlane

OpenCasCade——將鼠標點的位置轉(zhuǎn)換為基于OCC三維坐標系中在某一面上的坐標

weixin_44717825:

你好;我想問一下,我是直接在top面上畫的;請問這個PlaneOfTheView應(yīng)該是什么呢?就是在建模的時候沒有特意選擇平面;

c++多線程中detach的使用隱患

七小丘人:

觀察到指針沒有拷貝是真的嗎 和我理解的不太一樣

c++多線程中detach的使用隱患

七小丘人:

按理來說所有參數(shù)都會拷貝到新線程的內(nèi)存空間中,std::thread構(gòu)造函數(shù)會盲目拷貝已經(jīng)提供的變量,以至于傳引用要使用std::ref才行

c++ 編譯代碼時Link失敗,無法關(guān)閉目標文件

Emoren580:

請問有解決嗎?這個會導(dǎo)致編譯速度慢嗎?

您愿意向朋友推薦“博客詳情頁”嗎?

強烈不推薦

不推薦

一般般

推薦

強烈推薦

提交

最新文章

OpenCasCad 中 TCollection_HExtendedString、TCollection_ExtendedString與QString的相互轉(zhuǎn)換

Open Cascade 獲取面的內(nèi)外環(huán)線

Opencascade 開發(fā)中V3d_View的常用方法和代碼總結(jié)

2024年16篇

2023年41篇

2022年46篇

2021年67篇

2020年107篇

2019年203篇

2018年85篇

2017年113篇

2016年150篇

2015年11篇

目錄

目錄

分類專欄

圖形處理

11篇

CMake

2篇

數(shù)學(xué)

10篇

EDA

1篇

Chromium開源項目

2篇

匯編

58篇

Electron

STL

41篇

can總線

5篇

Boost

1篇

網(wǎng)絡(luò)運維

22篇

OpenCasCade

43篇

電腦設(shè)備

17篇

數(shù)據(jù)庫

77篇

windows c/c++

304篇

系統(tǒng)架構(gòu)師之路

5篇

網(wǎng)絡(luò)編程

33篇

病毒分析

9篇

加殼脫殼

6篇

批處理

8篇

程序人生

9篇

linux

23篇

NSIS

1篇

BPEL

4篇

Java

1篇

正則表達式

2篇

asp.net/mvc

7篇

Opencv

3篇

AI

1篇

IDA

16篇

C#

37篇

linux c/c++

51篇

html/javascript/jquery

3篇

數(shù)據(jù)結(jié)構(gòu)與算法

10篇

DuiLib

11篇

QT

45篇

OpenGL

16篇

Python

4篇

設(shè)計模式

17篇

GDI/GDI+

3篇

目錄

評論?1

被折疊的??條評論

為什么被折疊?

到【灌水樂園】發(fā)言

查看更多評論

添加紅包

祝福語

請?zhí)顚懠t包祝福語或標題

紅包數(shù)量

紅包個數(shù)最小為10個

紅包總金額

紅包金額最低5元

余額支付

當前余額3.43元

前往充值 >

需支付:10.00元

取消

確定

下一步

知道了

成就一億技術(shù)人!

領(lǐng)取后你會自動成為博主和紅包主的粉絲

規(guī)則

hope_wisdom 發(fā)出的紅包

實付元

使用余額支付

點擊重新獲取

掃碼支付

錢包余額

0

抵扣說明:

1.余額是錢包充值的虛擬貨幣,按照1:1的比例進行支付金額的抵扣。 2.余額無法直接購買下載,可以購買VIP、付費專欄及課程。

余額充值

調(diào)用ocx ActiveX控件詳解(做一個簡單的ocx控件) - Chellyyy - 博客園

調(diào)用ocx ActiveX控件詳解(做一個簡單的ocx控件) - Chellyyy - 博客園

會員

周邊

新聞

博問

AI培訓(xùn)

云市場

所有博客

當前博客

我的博客

我的園子

賬號設(shè)置

簡潔模式 ...

退出登錄

注冊

登錄

Chellyyy

博客園

首頁

新隨筆

聯(lián)系

訂閱

管理

調(diào)用ocx ActiveX控件詳解(做一個簡單的ocx控件)

背景

最近做的項目都和插件有關(guān),就是在頁面中調(diào)用插件的方法,然后進行操作。

插件就是ocx?ActiveX控件,具體的說明可以自己去了解一下,在這里就不做贅述。

具體調(diào)用方式很簡單:

1、在頁面中寫一個object標簽,標簽中定義一個classid屬性,這個屬性是獲取到插件的關(guān)鍵

2、直接在js中獲取到這個dom,然后就可以調(diào)用插件中的方法

let ocx = document.getElementById("ocx");

let sum = ocx.Add(1,2);

在使用過程中遇到了很多問題,于是自己去摸索了一下如何制作一個ocx插件,也能夠幫助自己加深一些使用方面的了解。

?

工具及下載準備

這里使用Visual Studio Community 2019,先下載必須的組件和依賴包。

使用C++的桌面開發(fā)和Visual Studio擴展開發(fā)這兩項必須要勾選。

然后桌面開發(fā)中還需要勾選與MFC相關(guān)的庫,如果不勾選的話無法新建MFC項目

勾選完成后就開始下載相關(guān)的包,這個過程需要等待一會。

開始項目

下載完成后就可以開始新建一個項目,在這里選擇MFC ActiveX控件,命名為MyMFCActiveXControl

然后就會生成一系列控件名,頭文件等等的文件名,這里基本上不用做什么操作,直接完成就好。

唯一需要注意的是一個控件類型ID,這個ID我們后面會用到。

?

點擊完成后,就會生成一系列與插件相關(guān)的文件,這些文件里面包含了插件的類,頭文件,描述等信息。

因為不是專門學(xué)習(xí)C++的,不對里面的原理和結(jié)構(gòu)進行探究,就取我需要的內(nèi)容就行。

來找一找那個神奇的classid。

打開視圖中的解決方案資源管理器,找到源文件中以idl結(jié)尾的文件,這個文件包含了很多與插件相關(guān)的信息,例如版本,對外接口等等。

文件中有好幾個uuid都和我們用的classid長得很像,但是我們調(diào)用的classid是其中類信息下的uuid。

有興趣了解其他幾個uuid的信息可以參考這篇文章來了解:c++ ActiveX基礎(chǔ)1:使用VS2010創(chuàng)建MFC ActiveX工程項目

然后我們來添加一個方法測試一下這個插件。

在類視圖中找到以Lib結(jié)尾的Liberary,點開找到Control項右擊后點擊添加—>添加方法

在彈出的選項中添加一個最簡單的加法方法,點擊確定。

編譯器會幫我們在三個文件里面都做一些修改。

在.idl中定義了我們剛才添加的方法

在.h文件中聲明了這個方法

在同名的.cpp文件中對方法進行實現(xiàn),我們將返回值改成p1 + p2;

生成項目,在生成的目錄下找到.ocx結(jié)尾的文件,這個就是我們生成的插件啦。

現(xiàn)在還沒有辦法使用這個插件,要在注冊表中進行注冊。可以用以下兩種方式:

1、右擊ocx文件選擇打開方式,選擇C:\Windows\System32文件夾下的regsvr32.exe打開

2、直接運行regsvr32+ocx路徑

注冊成功后都有以下提示

然后就可以在頁面中編寫我們的代碼進行測試,

但是在調(diào)用時意外地報了找不到成員這個錯。

查閱資料發(fā)現(xiàn)是需要修改瀏覽器的安全設(shè)置。

點擊瀏覽器的設(shè)置,找到Internet選項—>安全,因為是在本地測試就選擇本地Internet。

選擇自定義級別—>對未標記為可安全的ActiveX控件初始化...—>點擊啟用

其實啟用這個選項不是特別安全,特別是讓用戶多了這一步操作,會增加使用難度,如何繞開這個安全模式可以參考下面的解決方式。

在Ctrl.h頭文件中添加如下代碼

// for IObjectSafety;不要忘了這個頭

#include

   //////////////////////////////////////////////////////////////////////////

// ActiveX控件安全初始化:實現(xiàn)ISafeObject接口

//////////////////////////////////////////////////////////////////////////

//ISafeObject

DECLARE_INTERFACE_MAP()

BEGIN_INTERFACE_PART(ObjSafe, IObjectSafety)

STDMETHOD_(HRESULT, GetInterfaceSafetyOptions) (

/* [in] */ REFIID riid,

/* [out] */ DWORD __RPC_FAR* pdwSupportedOptions,

/* [out] */ DWORD __RPC_FAR* pdwEnabledOptions

);

STDMETHOD_(HRESULT, SetInterfaceSafetyOptions) (

/* [in] */ REFIID riid,

/* [in] */ DWORD dwOptionSetMask,

/* [in] */ DWORD dwEnabledOptions

);

END_INTERFACE_PART(ObjSafe);

//ISafeObject

在Ctrl.cpp中添加如下代碼,如果創(chuàng)建的項目名稱和我的不一樣,記得修改里面的類名

//////////////////////////////////////////////////////////////////////////

// ActiveX控件安全初始化:實現(xiàn)ISafeObject接口

//////////////////////////////////////////////////////////////////////////

// Interface map for IObjectSafety

BEGIN_INTERFACE_MAP(CMyMFCActiveXControlCtrl, COleControl)

INTERFACE_PART(CMyMFCActiveXControlCtrl, IID_IObjectSafety, ObjSafe)

END_INTERFACE_MAP()

// IObjectSafety member functions

// Delegate AddRef, Release, QueryInterface

ULONG FAR EXPORT CMyMFCActiveXControlCtrl::XObjSafe::AddRef()

{

METHOD_PROLOGUE(CMyMFCActiveXControlCtrl, ObjSafe)

return pThis->ExternalAddRef();

}

ULONG FAR EXPORT CMyMFCActiveXControlCtrl::XObjSafe::Release()

{

METHOD_PROLOGUE(CMyMFCActiveXControlCtrl, ObjSafe)

return pThis->ExternalRelease();

}

HRESULT FAR EXPORT CMyMFCActiveXControlCtrl::XObjSafe::QueryInterface(

REFIID iid, void FAR* FAR* ppvObj)

{

METHOD_PROLOGUE(CMyMFCActiveXControlCtrl, ObjSafe)

return (HRESULT)pThis->ExternalQueryInterface(&iid, ppvObj);

}

const DWORD dwSupportedBits =

INTERFACESAFE_FOR_UNTRUSTED_CALLER |

INTERFACESAFE_FOR_UNTRUSTED_DATA;

const DWORD dwNotSupportedBits = ~dwSupportedBits;

//.............................................................................

// CStopLiteCtrl::XObjSafe::GetInterfaceSafetyOptions

// Allows container to query what interfaces are safe for what. We're

// optimizing significantly by ignoring which interface the caller is

// asking for.

HRESULT STDMETHODCALLTYPE

CMyMFCActiveXControlCtrl::XObjSafe::GetInterfaceSafetyOptions(

/* [in] */ REFIID riid,

/* [out] */ DWORD __RPC_FAR* pdwSupportedOptions,

/* [out] */ DWORD __RPC_FAR* pdwEnabledOptions)

{

METHOD_PROLOGUE(CMyMFCActiveXControlCtrl, ObjSafe)

HRESULT retval = ResultFromScode(S_OK);

// does interface exist?

IUnknown FAR* punkInterface;

retval = pThis->ExternalQueryInterface(&riid,

(void**)&punkInterface);

if (retval != E_NOINTERFACE) { // interface exists

punkInterface->Release(); // release it--just checking!

}

// we support both kinds of safety and have always both set,

// regardless of interface

*pdwSupportedOptions = *pdwEnabledOptions = dwSupportedBits;

return retval; // E_NOINTERFACE if QI failed

}

/////////////////////////////////////////////////////////////////////////////

// CStopLiteCtrl::XObjSafe::SetInterfaceSafetyOptions

// Since we're always safe, this is a no-brainer--but we do check to make

// sure the interface requested exists and that the options we're asked to

// set exist and are set on (we don't support unsafe mode).

HRESULT STDMETHODCALLTYPE

CMyMFCActiveXControlCtrl::XObjSafe::SetInterfaceSafetyOptions(

/* [in] */ REFIID riid,

/* [in] */ DWORD dwOptionSetMask,

/* [in] */ DWORD dwEnabledOptions)

{

METHOD_PROLOGUE(CMyMFCActiveXControlCtrl, ObjSafe)

// does interface exist?

IUnknown FAR* punkInterface;

pThis->ExternalQueryInterface(&riid, (void**)&punkInterface);

if (punkInterface) { // interface exists

punkInterface->Release(); // release it--just checking!

}

else { // interface doesn't exist

return ResultFromScode(E_NOINTERFACE);

}

// can't set bits we don't support

if (dwOptionSetMask & dwNotSupportedBits) {

return ResultFromScode(E_FAIL);

}

// can't set bits we do support to zero

dwEnabledOptions &= dwSupportedBits;

// (we already know there are no extra bits in mask )

if ((dwOptionSetMask & dwEnabledOptions) !=

dwOptionSetMask) {

return ResultFromScode(E_FAIL);

}

// don't need to change anything since we're always safe

return ResultFromScode(S_OK);

}

//////////////////////////////////////////////////////////////////////////

然后就可以在頁面上進行調(diào)用啦,調(diào)用成功返回了正確的值。

let ocx = document.getElementById("ocx");

let sum = ocx.Add(1, 2);

alert(sum);

拓展

剛才演示的都是正常情況下的調(diào)用,在實際使用時,最重要的場景是如何驗證電腦中是否安裝了我們需要使用的插件。

常見的辦法有兩種:

1、調(diào)用插件方法時使用異常處理,用try...catch來捕獲調(diào)用不到插件的情況

我們把插件卸載掉,運行regsvr /u 插件地址來卸載插件

會提示卸載成功

這個時候我們再來調(diào)用一下上面的Add方法。

try {

let ocx = document.getElementById("ocx");

let sum = ocx.Add(1, 2);

alert(sum);

} catch (e) {

alert(e);

}

會提示對象不支持Add屬性或方法,這樣好像就能判斷本機是否安裝了插件。

但是在版本迭代中,插件的方法肯定會越來越多,不止一個方法,那么這個方法還能幫助我們判斷嘛?

我們來嘗試注冊插件后,調(diào)用一個不存在Sub方法。

try {

let ocx = document.getElementById("ocx");

let sum = ocx.Sub(1, 2);

alert(sum);

} catch (e) {

alert(e);

}

也會得到同樣的結(jié)果,所以這個方法不是判斷本機是否安裝插件的最佳辦法。

這里我推薦第二種辦法

2、通過ActiveXObject來檢測是否安裝插件

var findOcx = function () {

let control;

try {

//插件ProgID

control = new ActiveXObject('MFCACTIVEXCONTRO.MyMFCActiveXControlCtrl.1');

} catch (e) {

console.log(e);

return false;

}

return true;

};

這個方法new了一個ActiveXObject對象,里面的參數(shù)就是剛才我們新建項目時標注的控件類型ID。

在.idl文件中也可以找到這個ID。

在注冊表中他以這樣的形式存在

如果未安裝插件,會提示Automation 服務(wù)器不能創(chuàng)建對象,這樣就把是否安裝插件和這個版本的插件是否有這個方法這兩個問題區(qū)分開來了。

如果插件存在,通過調(diào)試,也可以查看插件暴露出來的所有方法。

插件可以做很多事情,可以繞過瀏覽器的安全限制在本地讀寫文件,也可以繪制圖像,顯示視頻流等等。

但是插件的局限性也很大。

在實際使用中,版本的更迭提示、不同系統(tǒng)不同瀏覽器版本的安全模式等等問題處理起來更是讓人頭疼。

所以建議不到萬不得己最好不要使用插件。

posted @

2020-04-29 13:46?

Chellyyy?

閱讀(9688)?

評論(3)?

編輯?

收藏?

舉報

會員力量,點亮園子希望

刷新頁面返回頂部

公告

Copyright ? 2024 Chellyyy

Powered by .NET 8.0 on Kubernetes

OCX開發(fā)總結(jié)-騰訊云開發(fā)者社區(qū)-騰訊云

發(fā)總結(jié)-騰訊云開發(fā)者社區(qū)-騰訊云Seven DuOCX開發(fā)總結(jié)關(guān)注作者騰訊云開發(fā)者社區(qū)文檔建議反饋控制臺首頁學(xué)習(xí)活動專區(qū)工具TVP最新優(yōu)惠活動文章/答案/技術(shù)大牛搜索搜索關(guān)閉發(fā)布登錄/注冊首頁學(xué)習(xí)活動專區(qū)工具TVP最新優(yōu)惠活動返回騰訊云官網(wǎng)Seven Du首頁學(xué)習(xí)活動專區(qū)工具TVP最新優(yōu)惠活動返回騰訊云官網(wǎng)社區(qū)首頁 >專欄 >OCX開發(fā)總結(jié)OCX開發(fā)總結(jié)Seven Du關(guān)注發(fā)布于 2020-12-21 16:03:101.6K0發(fā)布于 2020-12-21 16:03:10舉報文章被收錄于專欄:FreeSWITCH中文社區(qū)FreeSWITCH中文社區(qū)01OCX開發(fā)總結(jié)

首先,使用ocx意味著,網(wǎng)站只支持windows??!MFC ActiveX和ATLC++ ocx開發(fā),有ATL和MFC ActiveX兩套框架。二者的比較,簡單說,MFC封裝程度高,故MFC使得你很快完成你的工程并更快的運行起來,但是犧牲了靈活性;ATL更接近COM核心,輕量級。如果ocx需要界面的話,如監(jiān)控控件需要顯示視頻流。建議使用MFC ActiveX,可以像MFC Dialog項目那樣寫界面,盡管說MFC過時了,但C++寫簡單實用的界面,還有其他更好的選擇?如果很在意ocx控件大小的話,只能用ATL,因為MFC ActiveX是MFC項目——打入MFC庫,不夠輕量。02MFC ActiveX開發(fā)ocx注意事項找不到Active Test Control工具(tstcon32.exe)這是一個很實用的ocx測試工具,從VS2010起不再提供這一個工具(據(jù)說是由于微軟內(nèi)部評測不理想);但可以從網(wǎng)站下到,可正常使用,最少我目前為止沒發(fā)現(xiàn)有問題。CLSID如何查看[ uuid(B24A098C-DBEE-482F-914D-7C951CEDAC36), helpstring("GridCapture Control"), control ]

coclass GridCapture

{

[default] dispinterface _DGridCapture;

[default, source] dispinterface _DGridCaptureEvents;

};復(fù)制在ProgramName.idl文件,如上位置,索搜關(guān)鍵字coclass快速查找。數(shù)據(jù)類型一般使用LONG(整型)BSTR(字符串)類型就夠了。遇到棘手的情況,使用VARIANT類型——union定義的“萬能類型”,當年在VB、VC、C#等擴平臺調(diào)用時出現(xiàn)過問題,使用復(fù)雜,現(xiàn)在具體已經(jīng)記不清了。建議不要使用bool類型,用long代替:當年在客戶那出bug了,最后的原因是true!=true,VB的true值是1,VC是8位全1——255,1!=255。如若使用ocx的bool,推薦判false——都是0。cab打包編寫inf文件如下[version]

signature="$CHICAGO$"AdvancedINF=1.0[Add.Code]

MFCActiveXControl1.ocx=MFCActiveXControl1.ocx

mfc110.dll=mfc110.dll

msvcp110.dll=msvcp110.dll

msvcr110.dll=msvcr110.dll[MFCActiveXControl1.ocx]

file-win32-x86=thiscab

clsid={CC62BF54-D650-4123-B626-F356FD28C2A5}

RegisterServer=yes

DestDir=11[mfc110.dll]

file-win32-x86=thiscab

RegisterServer=no

DestDir=11

FileVersion=11.00.50727.1[msvcp110.dll]

file-win32-x86=thiscab

RegisterServer=no

DestDir=11

FileVersion=11.00.50727.1[msvcr110.dll]

file-win32-x86=thiscab

RegisterServer=no

DestDir=11

FileVersion=11.00.50727.1[DestinationDirs]

InstallFilesSection=11復(fù)制打包指令cabarc -s 6144 n myocx.cab mfc110.dll mfc110.dll msvcp110.dll msvcr110.dll MFCActiveXControl1.ocx myocx.inf復(fù)制demo調(diào)用

復(fù)制object id屬性很重要ocx.name操作ocx接口的name屬性ocx.start()調(diào)用ocx接口的start方法為什么param標簽初始化ocx屬性值不成功?!因為在DoPropExchange函數(shù)中沒有設(shè)置void CGridCaptureCtrl::DoPropExchange(CPropExchange* pPX)

{

ExchangeVersion(pPX, MAKELONG(_wVerMinor, _wVerMajor));

COleControl::DoPropExchange(pPX); if (pPX->GetVersion() == (DWORD)MAKELONG(_wVerMinor, _wVerMajor))

{

PX_String(pPX,_T("name"),m_name);

PX_Long(pPX, _T("age"), m_age);

}

}復(fù)制js與ocx借助ocx event進行通訊通過MFC向?qū)砑觘vent,會自定生成如下:(以名為TestEvent的自定義消息為例)在idl文件XXXEvents中添加事件的接口定義dispinterface _DMFCActiveXControl1Events {dispinterface _DMFCActiveXControl1Events {

properties:

// 事件接口沒有任何屬性

methods:

[id(2)] void TestEvent(BSTR name, LONG age);

};復(fù)制2.在XXXCtrol類中實現(xiàn)TestEvent方法void TestEvent(LPCTSTR name, LONG age)

{

FireEvent(eventidTestEvent, EVENT_PARAM(VTS_BSTR VTS_I4), name, age);

}復(fù)制3.添加事件映射,通常在XXXCtrol.cBEGIN_EVENT_MAP(CMFCActiveXControl1Ctrl, COleControl)

EVENT_CUSTOM_ID("TestEvent", eventidTestEvent, TestEvent, VTS_BSTR VTS_I4)

END_EVENT_MAP()復(fù)制附:通過MFC向?qū)砑觨cx屬性、方法與之雷同,三步操作:在idl文件中添加ocx接口定義,在XXXCtrol類中添加方法實現(xiàn),在XXCtrol.c中添加映射。開始測試1.ocx端發(fā)送事件 在start方法接口里發(fā)送TestEvent消息void CMFCActiveXControl1Ctrl::start(void)

{

AFX_MANAGE_STATE(AfxGetStaticModuleState());

// TODO: 在此添加調(diào)度處理程序代碼

TestEvent(L"Tom", 30);

}復(fù)制2.html端復(fù)制本文參與?騰訊云自媒體分享計劃,分享自微信公眾號。原始發(fā)表:2018-10-15,如有侵權(quán)請聯(lián)系[email protected] 刪除c++編程算法打包本文分享自 FreeSWITCH中文社區(qū) 微信公眾號,前往查看如有侵權(quán),請聯(lián)系 [email protected] 刪除。本文參與?騰訊云自媒體分享計劃? ,歡迎熱愛寫作的你一起參與!c++編程算法打包評論登錄后參與評論0 條評論熱度最新登錄 后參與評論推薦閱讀LV.關(guān)注文章0獲贊0目錄OCX開發(fā)總結(jié)

MFC ActiveX和ATLMFC ActiveX開發(fā)ocx注意事項找不到Active Test Control工具(tstcon32.exe)CLSID如何查看數(shù)據(jù)類型cab打包demo調(diào)用為什么param標簽初始化ocx屬性值不成功?!js與ocx借助ocx event進行通訊領(lǐng)券社區(qū)專欄文章閱讀清單互動問答技術(shù)沙龍技術(shù)視頻團隊主頁騰訊云TI平臺活動自媒體分享計劃邀請作者入駐自薦上首頁技術(shù)競賽資源技術(shù)周刊社區(qū)標簽開發(fā)者手冊開發(fā)者實驗室關(guān)于社區(qū)規(guī)范免責(zé)聲明聯(lián)系我們友情鏈接騰訊云開發(fā)者掃碼關(guān)注騰訊云開發(fā)者領(lǐng)取騰訊云代金券熱門產(chǎn)品域名注冊云服務(wù)器區(qū)塊鏈服務(wù)消息隊列網(wǎng)絡(luò)加速云數(shù)據(jù)庫域名解析云存儲視頻直播熱門推薦人臉識別騰訊會議企業(yè)云CDN加速視頻通話圖像分析MySQL 數(shù)據(jù)庫SSL 證書語音識別更多推薦數(shù)據(jù)安全負載均衡短信文字識別云點播商標注冊小程序開發(fā)網(wǎng)站監(jiān)控數(shù)據(jù)遷移Copyright ? 2013 - 2024 Tencent Cloud. All Rights Reserved. 騰訊云 版權(quán)所有?深圳市騰訊計算機系統(tǒng)有限公司 ICP備案/許可證號:粵B2-20090059?深公網(wǎng)安備號 44030502008569騰訊云計算(北京)有限責(zé)任公司 京ICP證150476號 | ?京ICP備11018762號 | 京公網(wǎng)安備號11010802020287問題歸檔專欄文章快訊文章歸檔關(guān)鍵詞歸檔開發(fā)者手冊歸檔開發(fā)者手冊 Section 歸檔Copyright ? 2013 - 2024 Tencent Cloud.All Rights Reserved. 騰訊云 版權(quán)所有登錄 后參與評論00