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.
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.
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 |