Användarobjekt

Användargränssnittsobjekt stöder endast ett handtag per objekt. Processer kan inte ärva eller duplicera referenser till användarobjekt. Processer i en session kan inte referera till ett användarhandtag i en annan session.

Det finns en teoretisk gräns på 65 536 användarhandtag per session. Det maximala antalet användarreferenser som kan öppnas per session är dock vanligtvis lägre, eftersom det påverkas av tillgängligt minne. Det finns också en standardgräns per process för användarhandtag. Om du vill ändra den här gränsen anger du följande registervärde:

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

Det här värdet kan anges till ett tal mellan 200 och 18 000.

Hanterar till användarobjekt

Referenser till användarobjekt är offentliga för alla processer. En process kan alltså använda användarobjekthandtaget, förutsatt att processen har säkerhetsåtkomst till objektet.

I följande bild skapar ett program ett fönsterobjekt. Funktionen CreateWindow skapar fönsterobjektet och returnerar ett objekthandtag.

program som skapar ett fönsterobjekt

När fönsterobjektet har skapats kan programmet använda fönsterhandtaget för att visa eller ändra fönstret. Handtaget förblir giltigt tills fönsterobjektet har förstörts.

I nästa bild förstör programmet fönsterobjektet. Funktionen DestroyWindow tar bort fönsterobjektet från minnet, vilket gör fönsterhandtaget ogiltigt.

förstöra ett fönsterobjekt

Hantera användarobjekt

I följande tabell visas användarobjekten, tillsammans med varje objekts funktioner för skapare och jagare. Skaparfunktionerna skapar antingen objektet och ett objekthandtag eller returnerar helt enkelt det befintliga objekthandtaget. Jagarfunktionerna tar bort objektet från minnet, vilket gör objekthandtaget ogiltigt.

Användarobjekt Creator-funktion Destroyer-funktion
Acceleratortabell CreateAcceleratorTable DestroyAcceleratorTable
Cirkumflex CreateCaret DestroyCaret
Markör CreateCursor, LoadCursor, LoadImage DestroyCursor
DDE-konversation DdeConnect, DdeConnectList DdeDisconnect, DdeDisconnectList
Krok SetWindowsHookEx UnhookWindowsHookEx
Ikon CreateIconIndirect, LoadIcon, LoadImage DestroyIcon
Meny CreateMenu, CreatePopupMenu, LoadMenu, LoadMenuIndirect DestroyMenu
Fönster CreateWindow, CreateWindowEx, CreateDialogParam, CreateDialogIndirectParam, CreateMDIWindow DestroyWindow
Fönsterposition BeginDeferWindowPos EndDeferWindowPos