Объекты пользователя

Пользовательские объекты поддерживают только один дескриптор на объект. Процессы не могут наследовать или дублировать дескрипторы  объектов пользователя. Нет ограничений для одного процесса  на пользовательские дескрипторы, но есть ограничение для всей системы - 65 536 пользовательских дескрипторов.

Дескрипторы объектов пользователя общедоступны для всех процессов. То есть любой процесс может использовать дескриптор объекта пользователя, при условии, что процесс имеет защищенный доступ к объекту.

На следующей ниже иллюстрации прикладная программа создает объект окна. Функция CreateWindow создает объект окна и возвращает дескриптор объекта.

Создание объекта окна приложением

После того, как объект окна был создан, приложение может использовать дескриптор окна, чтобы показать на экране или изменять окно. Дескриптор остается допустимым до тех пор, пока объект окна не разрушится.

На следующей иллюстрации, прикладная программа разрушает объект окна. Функция DestroyWindow удаляет объект окна из памяти, тем самым делает недействительным дескриптор окна.

Destroying a window object

Таблица ниже перечисляет объекты пользователя вместе с создающими  и разрушающими функциями каждого объекта. Функции-создатели или создают объект и его дескриптор, или просто возвращает дескриптор существующего объекта. Функции-разрушители удаляют объект из памяти, тем самым делая недействительным дескриптор объекта.

Объект пользователя Функция-создатель Функция-разрушитель
Таблица клавиш-ускорителей (Accelerator table) CreateAcceleratorTable DestroyAcceleratorTable
Каретка (Caret) CreateCaret DestroyCaret
Курсор (Cursor) CreateCursor, LoadCursor, LoadImage DestroyCursor
Диалог DDE (DDE conversation) DdeConnect, DdeConnectList DdeDisconnect, DdeDisconnectList
Фильтр-процедура (Hook) SetWindowsHookEx UnhookWindowsHookEx
Значок (Icon) CreateIconIndirect, LoadIconLoadImage DestroyIcon
Меню (Menu) CreateMenu, CreatePopupMenu, LoadMenu, LoadMenuIndirect DestroyMenu
Окно (Window) CreateWindow, CreateWindowEx, CreateDialogParam, CreateDialogIndirectParam, CreateMDIWindow DestroyWindow
Позиция окна (Window position) BeginDeferWindowPos EndDeferWindowPos
 
Назад в оглавление темы
На главную страницу темы

Hosted by uCoz