孫鑫 第十八課ActiveX控制項

2021-06-16 10:05:14 字數 1865 閱讀 8588

說明

activex控制項有三個要素:屬性, 方法, 事件

①屬性比如button控制項的顯示文字,名字等。

屬性值包括stock屬性和custom屬性,其中stock屬性為控制項固有屬性,即mfc封裝的屬性,例如前景色 / 背景色等。

而custom屬性則為使用者自己定製的屬性,在新增custom屬性時要指定外部名字,即使用者看到的該控制項的屬性名字;

還要指定內部名字,即控制項開發人員在開發控制項時使用的名字,通常為乙個成員變數(及其型別),用來記錄屬性值。

需要注意的一點:當使用者使用控制項時,設定了某個屬性的值,關閉下次開啟時,在使用者的環境裡,stock屬性自動保持上次開啟的值,

而custom屬性就要設定其永續性,在mfc中,通過colecontrol類的以px_開頭的成員函式設定其永續性,具體選擇哪個根據該屬性

的型別來定。

②方法方法也分為stock方法和custom方法。

stock方法不可編輯,新增完以後不能再編寫。

custom方法要指定外部名字,即給使用人員看的名字;內部名字,即控制項開發人員看的名字,新增完後即可開始編寫該函式的**。

新增custom方法可以指定該函式的返回值,引數s。

③事件事件和方法的不同之處在於:事件是控制項開發人員僅僅宣告該事件,而事件(custom)的具體實現**要由控制項使用者完成。

同樣,事件也分為stock事件和custom事件。

stock事件僅可以新增,不可以指定內部名字 / 外部名字 / 引數s。

custom事件新增時還可以指定外部名字,內部名字以及引數s。

stock事件由於是mfc封裝的事件,因此在使用人員只管呼叫該事件即可,該事件的**已經由mfc完成。

custom事件則不光要由使用人員完成事件**,而且控制項開發人員還要在開發時指定該事件的呼叫時機,即顯示地呼叫該事件。

使用控制項

在vc6中使用該控制項為例,新建乙個基於對話方塊的mfc應用程式,在對話方塊上右鍵->插入控制項,選擇該控制項即可插入。

如果是用選單  「工程->增加到工程->元件和控制項  」 新增控制項,在新增了該控制項的同時,還會自動新增乙個控制項類,用此控制項類使用人員便可以像動態建立按鈕那樣動態建立控制項。

幾個函式

①translatecolor

colorref   colecontrol::translatecolor(ole_color  clrcolor,  hpalette  hpal = null);

功能:把乙個ole_color型別轉換為colorref型別

②px_開頭的函式

eg.bool  px_short(cporpexchange*  ppx, lpctstr pszpropname, short& svalue);

函式功能:用來保持short型別的屬性值的永續性。

③invalidatecontrol

void  colecontrol::invalidatecontrol(lpcrect lprect = null);

函式功能:使控制項無效重繪,此時會呼叫控制項類的ondraw()函式。

④ambientusermode

bool  colecontrol::ambientusermode();

函式功能:獲得當前控制項的容器是在設計模式還是在執行模式,設計模式返回0,執行模式返回非0。

⑤boundpropertychanged

void  colecontrol::boundpropertychanged(dispid dispid);

函式功能:對於custom屬性,通知容器某該型別屬性的值發生變化了,要讓容器中該屬性值也隨之變化,每次改變都要通知。

補充

Go語言第十八課 CGO

可借助cgo實現go語言對c的呼叫,下面展示幾種呼叫方式。c 內容如下 include include include char test hello const char name int main 執行結果 yuyong hello go 如下 package main include incl...

日本語 第十八課

第十八課 攜帯電話 小 手機便的很小了 音 大 電視的聲音便大了 息子 醫者 兒子成為了醫生 部屋 綺麗 請把屋子收拾乾淨 風邪 感冒怎麼樣了啊?昨夜 薬 飲 昨天吃藥了,但是還沒有好轉 旅行 荷物 軽 旅行箱還是輕點好.軽 是啊,盡可能的變輕了.嬢 你的女兒多大了?今年 七歳 今年,已經7歲了.啊...

第十八課 物件的構造(中)

class test test t 定義物件並且呼叫建構函式 int main 二 建構函式的呼叫 include class test test int v int main test test int v v 1 test int v v 2 i 100 初始化和賦值不同 int i 1 初始化...