2010-05-06 77 views
1

或者在我的具體情況下,一個窗口區域(HRGN)?是否可以複製GDI句柄?

更新: 的問題是:

我對象的集合,這些對象可以容納一個HRGN。這些曾經獲得的區域在物體被毀壞時被釋放。由於其中一些對象存儲在std :: vector中,我必須定義一個分配運算符。

到現在爲止,我剛剛分配了那些HRGN,但那是一個錯誤。如果我複製這些對象,那麼每個對象都會嘗試刪除同一個區域,其中一個會使用不存在的區域。

+1

你爲什麼要複製句柄?您的問題可能有解決方案,但您需要提供更多上下文(以及可能的代碼片段)。 – 2010-05-06 21:11:28

+0

謝謝,我已經添加了一些上下文。 – Ismael 2010-05-07 14:29:57

回答

2

將每個HRGN包裹在引用計數對象中,該引用計數對象在任何智能指針例如shared_ptr

3

不,這是不可能的。 GDI對象僅支持每個對象的單個句柄。

+0

我希望我錯過了一些API調用,似乎更正解決方案是保持一個引用計數我自己。謝謝。 – Ismael 2010-05-07 14:31:39

4

您不能複製HRGN句柄,但可以使用CombineRgn函數獲得副本。

+0

我雖然使用RGN_COPY,但我不知道如何創建一個空白區域。 – Ismael 2010-05-07 14:18:13

+0

壞主意,GDI堆至少在較老的操作系統上非常有限。 – 2010-05-07 14:32:17

+0

是的,你是對的,我沒有考慮過。 – Ismael 2010-05-07 15:22:38