天天看點

ATL調用ocx的方法(無界面調用ocx控件)1. 前言2. 正題3. 結尾

1. 前言

首先添加AvtiveX中的MFC,選擇ocx控件,vs會自動生成.h和.cpp的類,然後使用這個類建立對象,調用Create方法成功後,就可以調用ocx的方法了。

2. 正題

2.1 準備工作

(1)首先準備一個ATL項目和一個ocx控件,注意本項目基于前文的ATL項目。

         基于ATL搭建的ActiveX : https://blog.csdn.net/q893332169/article/details/100018341

ATL調用ocx的方法(無界面調用ocx控件)1. 前言2. 正題3. 結尾

(2)添加ocx包裝類

ATL調用ocx的方法(無界面調用ocx控件)1. 前言2. 正題3. 結尾
ATL調用ocx的方法(無界面調用ocx控件)1. 前言2. 正題3. 結尾
ATL調用ocx的方法(無界面調用ocx控件)1. 前言2. 正題3. 結尾

(3)檢視生成的包裝類

ATL調用ocx的方法(無界面調用ocx控件)1. 前言2. 正題3. 結尾

(4)準備初始化包裝類的執行個體

ATL調用ocx的方法(無界面調用ocx控件)1. 前言2. 正題3. 結尾
ATL調用ocx的方法(無界面調用ocx控件)1. 前言2. 正題3. 結尾

(5) 在構造和析構中初始化ocx控件

ATL調用ocx的方法(無界面調用ocx控件)1. 前言2. 正題3. 結尾
ATL調用ocx的方法(無界面調用ocx控件)1. 前言2. 正題3. 結尾
ATL調用ocx的方法(無界面調用ocx控件)1. 前言2. 正題3. 結尾

2.2 調試

(1)先看結果

ATL調用ocx的方法(無界面調用ocx控件)1. 前言2. 正題3. 結尾

(2)打斷點

ATL調用ocx的方法(無界面調用ocx控件)1. 前言2. 正題3. 結尾

3. 結尾

大概寫了下ATL控件封裝ocx控件的内容,還有一些細節需要注意。比如ocx調用create一定要能擷取到父視窗,随便一個視窗即可,但是在其他線程裡初始ocx,是擷取不到主視窗的。比如包裝類隻包裝了ocx的方法,加入我想要調用屬性怎麼辦?這個時候,隻能在包裝類中手動添加方法來擷取ocx裡面的屬性。這些細節有空會單獨寫一篇部落格來記錄。

繼續閱讀