有關 DC 的釋放問題 |
答題得分者是:wameng
|
jessechan
版主 發表:109 回覆:394 積分:254 註冊:2002-04-05 發送簡訊給我 |
我最近在寫一個 screen capture 的程式, 有參考 AVI_UTILS 的 code, 它是以 GetDC(0) 來取得螢幕的 DC, 我發現程式中每次抓了一個 frame 之後就要 releaseDC 一次, 為了榨出程式的效能, 我有試過在程式起始 GetDC, 然後在結束時再 release, 看起來好像也沒什麼問題, 請問各位大大, 是否真的要每抓一個畫面就要釋放 DC, 如果不釋放的話, 我要注意什麼事, 另外我在 AVI_UTILS 中的 code 看到他還另外用 CreateCompatibleDC 來處理, 不知有什麼特別的功用, 煩請各位幫我解答一下. 謝謝.
------
Jesse Chan 編輯記錄
jessechan 重新編輯於 2007-06-12 17:24:35, 註解 無‧
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
是沒有必要這麼煩惱地。
GetDC 與 ReleaseDC 當然是有借有還再借不難。 按照字面解釋 GetDC 取得 HWND 所指定的最後一次狀態的繪圖 Device。 我的想法上應該是取得對應繪圖區塊(Windows 為了避免直接操作),最後在藉由ReleaseDC將其資源釋放。 當然沒有ReleaseDC 將造成GDI繪圖資源無放釋放的嚴重後果。尤其在Win9x GDI資源是有限的情況下。 將有可能造成系統崩潰。 CreateCompatibleDC 目的建造一個虛擬的繪圖Device。 補:或者建立 與目前設備或指定DC相容的設備。 SomeTime 會建立一個臨時的DC以供做一些繪圖處理。
編輯記錄
wameng 重新編輯於 2007-06-12 22:09:19, 註解 無‧
|
jessechan
版主 發表:109 回覆:394 積分:254 註冊:2002-04-05 發送簡訊給我 |
===================引 用 wameng 文 章=================== 是沒有必要這麼煩惱地。 GetDC 與 ReleaseDC 當然是有借有還再借不難。 按照字面解釋 GetDC 取得 HWND 所指定的最後一次狀態的繪圖 Device。 我的想法上應該是取得對應繪圖區塊(Windows 為了避免直接操作),最後在藉由ReleaseDC將其資源釋放。 當然沒有ReleaseDC 將造成GDI繪圖資源無放釋放的嚴重後果。尤其在Win9x GDI資源是有限的情況下。 將有可能造成系統崩潰。 CreateCompatibleDC 目的建造一個虛擬的繪圖Device。 補:或者建立 與目前設備或指定DC相容的設備。 SomeTime 會建立一個臨時的DC以供做一些繪圖處理。 ====================================================================================== 感謝回覆, 我想再問深入一些, 我在程式的最後再 release 會不會造成什麼不良影響(程式會執行很長一段時間), 會不會造成系統資源因為 DC 尚未釋放而越佔越多, 因為我一秒鐘要 get release 四次, 如果不用這麼做, 是可以省下不少系統操作時間, 另外再請教一下, CompatibleDC 的必要性, 我可以直接使用 GetDC(0) 嗎. 多謝.
------
Jesse Chan |
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
|
jessechan
版主 發表:109 回覆:394 積分:254 註冊:2002-04-05 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |