Objek Pengguna

Objek antarmuka pengguna hanya mendukung satu handel per objek. Proses tidak dapat mewarisi atau menduplikasi handel ke objek pengguna. Proses dalam satu sesi tidak dapat mereferensikan handel pengguna di sesi lain.

Ada batas teoritis 65.536 handel pengguna per sesi. Namun, jumlah maksimum handel pengguna yang dapat dibuka per sesi biasanya lebih rendah, karena dipengaruhi oleh memori yang tersedia. Ada juga batas default per proses handel pengguna. Untuk mengubah batas ini, atur nilai registri berikut:

\ HKEY_LOCAL_MACHINE PERANGKAT LUNAK\Microsoft\Windows NT\CurrentVersion\Windows\USERProcessHandleQuota

Nilai ini dapat diatur ke angka antara 200 dan 18.000.

Menangani ke Objek Pengguna

Handel ke objek pengguna bersifat publik untuk semua proses. Artinya, proses apa pun dapat menggunakan handel objek pengguna, asalkan proses memiliki akses keamanan ke objek.

Dalam ilustrasi berikut, aplikasi membuat objek jendela. Fungsi CreateWindow membuat objek jendela dan mengembalikan handel objek.

aplikasi membuat objek jendela

Setelah objek jendela dibuat, aplikasi dapat menggunakan handel jendela untuk menampilkan atau mengubah jendela. Handel tetap valid sampai objek jendela dihancurkan.

Dalam ilustrasi berikutnya, aplikasi menghancurkan objek jendela. Fungsi DestroyWindow menghapus objek jendela dari memori, yang membatalkan handel jendela.

menghancurkan objek jendela

Mengelola Objek Pengguna

Tabel berikut mencantumkan objek pengguna, bersama dengan fungsi pembuat dan perusak setiap objek. Fungsi pembuat membuat objek dan handel objek atau hanya mengembalikan handel objek yang ada. Fungsi perusak menghapus objek dari memori, yang membatalkan handel objek.

Objek pengguna Fungsi pembuat Fungsi perusak
Tabel Akselerator CreateAcceleratorTable DestroyAcceleratorTable
Tanda Kurus CreateCaret DestroyCaret
Kursor CreateCursor, LoadCursor, LoadImage DestroyCursor
Percakapan DDE DdeConnect, DdeConnectList DdeDisconnect, DdeDisconnectList
Kait SetWindowsHookEx UnhookWindowsHookEx
Ikon CreateIconIndirect, LoadIcon, LoadImage DestroyIcon
Menu CreateMenu, CreatePopupMenu, LoadMenu, LoadMenuIndirect DestroyMenu
Jendela CreateWindow, CreateWindowEx, CreateDialogParam, CreateDialogIndirectParam, CreateMDIWindow DestroyWindow
Posisi jendela BeginDeferWindowPos EndDeferWindowPos