Bagikan melalui


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\SOFTWARE\Microsoft\Windows NT\CurrentVersion\\USERProcessHandleQuota

Nilai ini dapat diatur ke angka antara 200 dan 18.000.

Menangani ke Objek Pengguna

Menangani objek pengguna bersifat publik untuk semua proses. Artinya, setiap proses 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 hingga objek jendela dihancurkan.

Dalam ilustrasi berikutnya, aplikasi menghancurkan objek jendela. FungsiDestroyWindow 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 penghancur 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 penghancur
Tabel akselerator CreateAcceleratorTable DestroyAcceleratorTable
Tanda Kurus CreateCaret DestroyCaret
Kursor CreateCursor, LoadCursor, LoadImage DestroyCursor
Percakapan DDE DdeConnect, DdeConnectList DdeDisconnect, DdeDisconnectList
Mata kail SetWindowsHookEx UnhookWindowsHookEx
Ikon CreateIconIndirect, LoadIcon, LoadImage DestroyIcon
Menu CreateMenu, CreatePopupMenu, LoadMenu, LoadMenuIndirect DestroyMenu
Jendela CreateWindow, CreateWindowEx, CreateDialogParam, CreateDialogIndirectParam, CreateMDIWindow DestroyWindow
Posisi jendela BeginDeferWindowPos EndDeferWindowPos