在乙個程式中,用到了好幾個相同控制項的例項,現在希望能通過某種方法來唯一的標誌這些控制項例項,以便能為每乙個控制項提供乙個正確的配置檔案,這是件很容易的事,但問題是並不希望控制項增加什麼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 變數名字 來呼叫。超全域性變數作用於也是為當前的指令碼檔案的任意位置,在使用的時候無需先執行 ...
全域性變數和靜態全域性變數
全域性變數和區域性變數是從變數的作用域的角度劃分。靜態變數和動態變數是從變數的記憶體分配的角度劃分。全域性變數本身就是靜態儲存方式,靜態全域性變數當然也是靜態儲存方式。這兩者在儲存方式上並無不同,區別在於非靜態全域性變數的作用域是整個源程式,當乙個源程式由多個原始檔組成時,非靜態的全域性變數在各個原...