ActiveX控制項中全域性變數的一種用法

2021-05-27 21:44:45 字數 866 閱讀 9839

在乙個程式中,用到了好幾個相同控制項的例項,現在希望能通過某種方法來唯一的標誌這些控制項例項,以便能為每乙個控制項提供乙個正確的配置檔案,這是件很容易的事,但問題是並不希望控制項增加什麼id,name之類的屬性,而是希望能在控制項內部自行的標誌。這是我乙個朋友問我的。

初看了下,感覺這不太可能吧,後來,想到colecontrol中有乙個ambientdisplayname,因此建議給這位朋友了。應該說,在vb或者delphi之類的容器中,這個函式是有用處的,但是總覺得畢竟ambientdisplayname並不要求所有的容器都能提供的,感覺上不太可靠,所以努力的翻查資料,希望能找到。

於是無意中突然想到了全域性變數,作為一種特殊的dll來說,activex控制項中的全域性變數是能用在整個程序中的,當然也包括所有的activex例項中,因此全域性變數可以輕鬆的勝任這種在多個activex例項之間的協調工作,而不需要控制項客戶程式的干預。

就做了個mfc的activex測試控制項試試了。

1.在控制項.cpp中定義全域性變數

uint gl_ncount = 0;

2.定義控制項成員變數

uint m_nid;

在控制項建構函式中

m_nid = gl_ncount;

gl_ncount++;

3.新增唯讀屬性id,在

long getid()函式中

return m_nid;

4.做了個vb程式,新增了幾個控制項,在form_load中

dim i as integer

for i = 0 to 3

msgbox tfire1(i).id

next

測試發現,確實可以區分開來,不過有意思的是,vb似乎是在設計時越後來新增的控制項,在執行時越最早載入,真是令人意外。

static全域性變數 全域性變數

1 全域性變數 外部變數 的說明之前再冠以static 就構成了靜態的全域性變數。全域性變數本身就是靜態儲存方式,靜態全域性變數當然也是靜態儲存方式。這兩者在儲存方式上並無不同。這兩者的區別在於非靜態全域性變數的作用域是整個源程式,當乙個源程式由多個原始檔組成時,非靜態的全域性變數在各個原始檔中都是...

PHP中全域性變數和超全域性變數

自定義全域性變數的作用域為當前的指令碼檔案的任意位置 函式或者方法啊之類的 但是要想用它們必須先執行一下 global variable語句 variable為要使用的全域性變數 或者是使用 global 變數名字 來呼叫。超全域性變數作用於也是為當前的指令碼檔案的任意位置,在使用的時候無需先執行 ...

全域性變數和靜態全域性變數

全域性變數和區域性變數是從變數的作用域的角度劃分。靜態變數和動態變數是從變數的記憶體分配的角度劃分。全域性變數本身就是靜態儲存方式,靜態全域性變數當然也是靜態儲存方式。這兩者在儲存方式上並無不同,區別在於非靜態全域性變數的作用域是整個源程式,當乙個源程式由多個原始檔組成時,非靜態的全域性變數在各個原...