共用方式為


使用者物件

使用者介面物件只支援每個物件的一個控制碼。 進程無法繼承或複製使用者物件的控制碼。 某個會話中的進程無法參考另一個會話中的使用者控制碼。

每個會話的理論限制為 65,536 個使用者控制碼。 不過,每個會話可以開啟的使用者控制碼數目上限通常較低,因為它會受到可用記憶體的影響。 使用者控制碼也有預設的個別進程限制。 若要變更此限制,請設定下列登錄值:

\ HKEY_LOCAL_MACHINE軟體\微軟\Windows NT\CurrentVersion\Windows\USERProcessHandleQuota

這個值可以設定為介於 200 到 18,000 之間的數位。

使用者物件的控制碼

使用者物件的控制碼對所有進程都是公用的。 也就是說,只要進程具有物件的安全性存取權,任何進程都可以使用使用者物件控制碼。

在下圖中,應用程式會建立視窗物件。 CreateWindow函式會建立視窗物件,並傳回物件控制碼。

應用程式建立視窗物件

建立視窗物件之後,應用程式可以使用視窗控制碼來顯示或變更視窗。 控制碼會維持有效狀態,直到視窗物件終結為止。

在下一個圖例中,應用程式會終結視窗物件。 DestroyWindow函式會從記憶體中移除視窗物件,使視窗控制碼失效。

終結視窗物件

管理使用者物件

下表列出使用者物件,以及每個物件的建立者和終端子函式。 建立者函式會建立物件和物件控制碼,或直接傳回現有的物件控制碼。 終端子函式會從記憶體中移除 物件,使物件控制碼失效。

使用者物件 Creator 函式 Destroyer 函式
快速鍵資料表 CreateAcceleratorTable DestroyAcceleratorTable
插入點 CreateCaret DestroyCaret
資料指標 CreateCursorLoadCursorLoadImage DestroyCursor
DDE 交談 DdeConnectDdeConnectList DdeDisconnectDdeDisconnectList
勾點 SetWindowsHookEx UnhookWindowsHookEx
圖示 CreateIconIndirectLoadIconLoadImage DestroyIcon
功能表 CreateMenuCreatePopupMenuLoadMenuLoadMenuIndirect DestroyMenu
時間範圍 CreateWindowCreateWindowExCreateDialogParamCreateDialogIndirectParamCreateMDIWindow DestroyWindow
視窗位置 BeginDeferWindowPos EndDeferWindowPos