VC6編寫ActiveX控制項全過程

2022-03-31 04:18:11 字數 1851 閱讀 9145

/*by:rush date:2023年6月22日 20:07:56*/

/*vc編寫activex控制項全過程*/

1、新建控制項工程

在新建專案時,選擇新建activex控制項,如下圖所示:

其他的基本可以選擇預設屬性,然後我們就可以進入自己新建的工程了,如右下圖所示。方框中標出的是新建控制項之後自帶的三個類。我做的控制項只是使用了c***ctrl這個類,主要是設定一些與外界進行資料通訊的介面的

屬性的,我自定義的幾個屬性都是在這裡完成程式設計的。

2、為控制項新增對話方塊

這個控制項的思想其實不是我的原創,只是專案的變化而產生的,而之前我是基於傳統的上位機軟體來編寫這個程式的,所以就選擇了向控制項中載入對話方塊的方法。首先是設定對話方塊的id,這裡假設對話方塊的id為idd_xy_dlg,然後我們可以在c***ctrl中的oncreate() 函式中新增對話方塊的引導程式,具體的程式如下:

int c***ctrl::oncreate(lpcreatestruct lpcreatestruct) 

對話方塊新增完之後,對對話方塊的操作與基於對話方塊的操作時完全一致的。所以這裡沒有什麼好講的。我自己的對話方塊的編寫也基本移植的之前自己編寫的上位機的程式。

3、為控制項新增屬性

製作控制項的乙個重要原因就是要提高程式的通用性,而通用性的提高必須是控制項能夠與第三方程式進行資料交換,這裡的資料交換就是通過控制項的屬性來完成的。現在我們來講一下新增屬性的步驟。view->classwizard->automation後進入新增介面,如下圖所示:

注意上圖中紅色直線標註的部分,我們是在c***ctrl類下來進行屬性的新增,做為示範,我們用兩種方法分別新增兩個屬性。

(1)在上圖中點選add property按鈕新增新的屬性名稱,如下圖所示。

我們新增乙個名字為xy0的float型屬性,這裡需要注意的是最上面的external name上填寫的是控制項屬性的外部名稱,就是第三方使用者在使用你的控制項時看到的屬性名稱,而系統會自動為你生成乙個variable name名稱來關聯你新增的屬性的外部名稱。我們在控制項內部程式設計時只需要呼叫內部變數就可以了。現在我們來使用member variable屬性建立屬性,這種方式不需要自己編寫關聯,而是系統自己為你新增。一路點選ok就可以完成屬性的新增,我們可以看到在c***ctrl類上新增了與新新增的屬性相對應的程式,這個程式相當於屬性值發生改變的**函式,具體的程式如下:

void c***ctrl::onxy0changed()

(2)使用get/set methods屬性建立屬性。

使用這種方法新增的屬性,我們需要自己編寫獲取控制項屬性函式和改變控制項屬性程式。在我做的專案中,使用這種方法比較的多,我們以新建乙個float型的c5屬性做為例子,新增屬性後,我們可以看到系統新增了兩個函式——getsc5() 和setc5() ,對應著獲取屬性的值和設定屬性的值,具體的程式如下:

float c***ctrl::getsc5() 

void c***ctrl::setc5(float newvalue)

vc6 控制項

詳見msdn 為控制項新增乙個控制項型變數然後訪問之 edit idc edit1 m edit1 void ctest1dlg onbutton1 也可以直接使用id訪問 cstring str int i getdlgitemtextw idc edit1,str afxmessagebox s...

vc6編寫python擴充套件的方法分享

系統環境 vc6 python 2.5.4 1 python 2.5.4原始碼。2 解壓,開啟d python 2.5.4 pc vc6 pcbuild.dsw,編譯,d python 2.5.4 pc vc6 下得到python25.dll python25 d.dll python25.lib ...

用C 編寫ActiveX控制項

選自 紅馬天下 的blog,做了適當修改將上下兩章合併 http blogs.homer 前些日子做乙個web專案,必須自己編寫乙個activex控制項。如今的activex控制項大多是使用vb c 來開發的,而我對他們並不熟悉,因此考慮使用熟悉的c 編寫activex控制項。首先,建立乙個winf...