Sdílet prostřednictvím


Objekty uživatele

Objekty uživatelského rozhraní podporují pouze jeden popisovač na objekt. Procesy nemohou dědit ani duplikovat popisovače uživatelským objektům. Procesy v jedné relaci nemohou odkazovat na popisovač uživatele v jiné relaci.

Pro každou relaci existuje teoretická omezení 65 536 obslužných rutin uživatelů. Maximální počet uživatelských popisovačů, které lze otevřít pro každou relaci, je ale obvykle nižší, protože je ovlivněn dostupnou pamětí. Existuje také výchozí limit jednotlivých procesů popisovačů uživatelů. Pokud chcete tento limit změnit, nastavte následující hodnotu registru:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\USERProcessHandleQuota

Tuto hodnotu lze nastavit na číslo od 200 do 18 000.

Popisovače uživatelských objektů

Popisovače uživatelských objektů jsou veřejné pro všechny procesy. To znamená, že jakýkoli proces může použít popisovač objektu uživatele za předpokladu, že proces má k objektu přístup zabezpečení.

Na následujícím obrázku aplikace vytvoří objekt okna. Funkce CreateWindow vytvoří objekt okna a vrátí popisovač objektu.

aplikace vytvářející objekt okna

Po vytvoření objektu okna může aplikace pomocí úchytu okna zobrazit nebo změnit okno. Popisovač zůstane platný, dokud se objekt okna nezničí.

Na následujícím obrázku aplikace zničí objekt okna. Funkce DestroyWindow odebere objekt okna z paměti, který zneplatňuje popisovač okna.

zničení objektu okna

Správa uživatelských objektů

Následující tabulka obsahuje seznam uživatelských objektů spolu s funkcemi tvůrce a destroyeru jednotlivých objektů. Funkce tvůrce buď vytvoří objekt a popisovač objektu, nebo jednoduše vrátí existující popisovač objektu. Funkce destroyer odeberou objekt z paměti, což zneplatní popisovač objektu.

Uživatelský objekt Funkce Creator Funkce Destroyer
Tabulka akcelerátorů CreateAcceleratorTable DestroyAcceleratorTable
Vynechávka CreateCaret DestroyCaret
Kurzor CreateCursor , LoadCursor, LoadImage DestroyCursor
Konverzace DDE DdeConnect , DdeConnectList DdeDisconnect , DdeDisconnectList
Hák SetWindowsHookEx UnhookWindowsHookEx
Ikona CreateIconIndirect, LoadIcon, LoadImage DestroyIcon
Menu CreateMenu , CreatePopupMenu, LoadMenu, LoadMenuIndirect DestroyMenu
Okno CreateWindow, CreateWindowEx, CreateDialogParam, CreateDialogIndirectParam, CreateMDIWindow DestroyWindow
Pozice okna BeginDeferWindowPos EndDeferWindowPos