C++Builder控制窗體何時駐留內存_第1頁
C++Builder控制窗體何時駐留內存_第2頁
C++Builder控制窗體何時駐留內存_第3頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、4.3窗體的更多細節(jié)使用ide創(chuàng)建一個窗體的同時,c+builder會自動地通過在winmain ()函數中加入代 碼來在內存中創(chuàng)建窗體。這也是一般所需的方式,可以不必去改變。也就是說,在整個程序 范圍內主窗口是一直存在的,所以為主窗口創(chuàng)建窗體吋,可以不必改變c+builder的缺省 方式。不過,你可能不希望在程序運行時,所有應用程序的窗體都駐留在內存屮,若不希望應用 程序的對話框同時留在內存中,可以在需要的時候動態(tài)地創(chuàng)建它們。窗體可分為模態(tài)(modal)和非模態(tài)(modeless)兩類,模態(tài)窗體指的是用戶在切換到其 他窗體z前需與z交互的窗體(例如,對話框就要求用戶的輸入)。非模態(tài)窗體是指-

2、直顯 示的窗口,直到用戶關閉或將其最小化,或者是被其他窗口蓋住。4.3.1控制窗體何時駐留內存缺省時c+builder會通過在應用程序的winmain()函數中加入下列代碼,自動地在內存中 創(chuàng)建應用程序主窗體。application ->createform(_classid(tmainfrm),&mainfrm);這個函數創(chuàng)建了一個與窗體同名的全局變呈:,應用程序中的每個窗體都對應一個全局變呈:, 這個變量是指向窗體類的實例的指針,并在程序運行的同用于引用窗體,所有包含窗體頭文 件(.h)的源代碼(.cpp)文件都可以通過這個變量來訪問窗體。因為窗體被加入到winmain ()

3、函數中,所以當程序一激活,窗體就會出現,同時在整 個應用程序運行時都駐留在內存中。1. 顯示自動生成的窗體假如選擇在程序啟動時創(chuàng)建窗體,但想在稍后再顯示它,這時町在窗體事件處理程序中用 show modal方法來顯示一個已存在于內存中的窗體。在這種情況下,由于窗體已存在于內存屮,故不用再創(chuàng)建另一個實例或析構那個實例。2. 動態(tài)創(chuàng)建窗體冇時不希望應用程序中的所冇窗體都駐留在內存中,為減少程序載入時所需的內存數,可 以在需要使用某些窗休時才創(chuàng)建它們。例如,對話框就只在用戶需和它交互時才需出現在內 存中。為在運行時不同階段使用ide創(chuàng)建窗體:1)從組件欄中選擇filenewform菜單項以顯示新窗體

4、。2)從projcctoptionsforms頁中的自動創(chuàng)建的窗體列表中,將該窗體刪除。這也就是從 winmain ()函數屮刪除窗體的調用,也可自行從winmain ()函數屮刪除下而這一行:3)需要調用窗體時,對于非模態(tài)窗體可使用show方法,對于模態(tài)窗體可使用showmodal 方法。上窗體的事件處理程序必須創(chuàng)建結果窗體的實例,并負責刪除已調川結果窗體的方式之 一是使用全局變量,如下所示。注$ resultsform是一個模態(tài)窗體,處理程序將使用 showmodal 方法。例中事件處理程序會在窗體關閉z后刪除它,因此若需要在應用程序的其他地方使用 resultsform,就需要使用new

5、重新創(chuàng)建它,若窗體是使用show方法顯示的,則不能在文 件處理程序中刪除它,因為show需在窗休是打開時返回。注重使川new操作符創(chuàng)建窗體時,要確保該窗體不在projectoptionsforms頁的自動創(chuàng)建 窗體的列表屮,確切地說,假如創(chuàng)建一個窗體而沒行從自動創(chuàng)建窗體列表中刪除同名的窗體, 則c+builder會在啟動時創(chuàng)建窗體,同時事件處理程序會創(chuàng)建一個新的實例,并會重載對 門創(chuàng)建實例的引用,門動創(chuàng)建的實例雖存在,但m用程序無法再訪問到它。而當事件處理程 序結束時,全局變量不再指向一個有效窗體,所有對該全局變量的調用都町能會造成應用程 序崩潰。3. 創(chuàng)建窗口之類的非模態(tài)窗體只要窗體仍在使用

6、,就必須保證非模態(tài)窗體的引用變量的存在,也就是說這此變量必須有 全局范圍,人多數情況卜,必須使用窗體創(chuàng)建吋牛:成的全局變量(變量名和窗體的name屬 性相同),假如應用程序需要窗體的額外的實例,必須為每個實例聲明單獨的金局變量。4. 使用局部變量創(chuàng)建窗體實例創(chuàng)建模態(tài)窗體個別實例的較安全方法是在事件處理程序中使川局部變量作為新實例的引 用。假如使用局部變最,就可以不必關心resultsform是否為白動創(chuàng)建的了,事件處理程序 的代碼不會引用全局窗體變量。例如:可以注重在這個事件處理程序屮沒有使用窗體的全局實例。應用程序一般使用窗體的全局 實例。不過,若需要模態(tài)窗體的新實例?;蚴窃趹贸绦虻膫€別的塊(例如某一個函數)小 使用窗體。使用局部實例則是最安全有效的方式

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論