Чтение онлайн

ЖАНРЫ

Русский справочник по Win32 API

Сорока Тарас

Шрифт:

Глобальные атомы не удаляются автоматически по завершению приложения. Для каждого вызова функции GlobalAddAtom должен быть соответствующий вызов функции GlobalDeleteAtom .

GlobalAddAtom возвращает строковый атом, чье значение лежит в диапазоне от 0 xC 000 до 0 xFFFF .

Если значение lpString имеет вид "#1234", GlobalAddAtom возвращает целый атом, чье значение являет собой 16-битное представление десятичного числа, указанного в строке (в данном случае 0 x 04 D 2). Если указанное десятичное значение представляет собой 0 x 0000 или значение, лежащее в диапазоне от 0 xC 000 до 0 xFFFF, возвращается нуль, указывающий

на ошибку. Если значение lpString лежит в диапазоне от 0 x 0001 до 0 xBFFF, возвращается младшее слово lpString .

Для преобразования значения WORD в строку, которая может быть добавлена функцией GlobalAddAtom в таблицу атомов, может быть использован макрос MAKEINTATOM .

См . также

AddAtom, DeleteAtom, FindAtom, GetAtomName, GlobalDeleteAtom, GlobalFindAtom, GlobalGetAtomName, MAKEINTATOM .

GlobalDeleteAtom

Функция GlobalDeleteAtom уменьшает счетчик ссылок глобальной строки атома. Если счетчик ссылок атома достигает нулевого значения, GlobalDeleteAtom удаляет строку, связанную с атомом, из таблицы глобальных атомов.

ATOM GlobalDeleteAtom (

ATOM nAtom // удаляемый атом

);

Параметры

nAtom– идентифицирует удаляемые атом и строку символов.

Возвращаемые значения

В случае успеха возвращается нуль.

В случае неудачи возвращается значение параметра nAtom . Для получения дополнительной информации об ошибке вызовите функцию GetLastError .

Комментарии

Счетчик ссылок строки атома определяет, сколько раз строка была добавлена или удалена в/из таблицы глобальных атомов. Функция GlobalDeleteAtom уменьшает счетчик ссылок строки, которая уже содержится в таблице глобальных атомов, при каждом вызове.

Единственный путь убедиться в том, что атом был удален из таблицы атомов - повторяющийся вызов функции до тех пор, пока ее вызов не закончится неудачей. Вызов функции GlobalFindAtom или GlobalDeleteAtom завершится неудачей, когда значение счетчика ссылок строки уменьшено до нуля.

Вызов GlobalDeleteAtom не воздействует на целый атом (атом, созданный макросом MAKEINTATOM ). Функция всегда возвращает нуль для целого атома.

См. также

AddAtom, DeleteAtom, FindAtom, GlobalAddAtom, GlobalFindAtom, MAKEINTATOM .

GlobalFindAtom

Функция GlobalFindAtom ищет в таблице глобальных атомов заданную строку символов и возвращает глобальный атом, связанный с данной строкой.

ATOM GlobalFindAtom (

LPCTSTR lpString // указатель на строку поиска

);

Параметры

lpString

указывает на завершающуюся нулем строку символов.

Возвращаемые значения

В случае успеха возвращается глобальный атом, связанный с данной строкой.

В случае неудачи возвращается нуль. Для получения дополнительной информации об ошибке вызовите функцию GetLastError .

Комментарии

Несмотря на то, что Windows сохраняет регистр строки в таблице атомов, поиск, выполняемый функцией GlobalFindAtom , не чувствителен к регистру.

См. также

AddAtom, DeleteAtom, FindAtom, GetAtomName, GlobalAddAtom, GlobalDeleteAtom, GlobalGetAtomName .

GlobalGetAtomName

Функция GlobalGetAtomName извлекает копию строки символов, связанной с указанным глобальным атомом.

UINT GlobalGetAtomName (

ATOM nAtom , // идентификатор атома

LPTSTR lpBuffer , // указатель на буфер для строки

int nSize // размер буфера

);

Параметры

nAtom– идентифицирует глобальный атом, связанный с извлекаемой строкой символов.

lpBuffer– указывает на буфер для строки символов.

nSize– указывает размер буфера в символах.

Возвращаемые значения

В случае успеха возвращается длина строки, в символах, скопированной в буфер, не считая завершающий нулевой символ.

В случае неудачи возвращается нуль. Для получения дополнительной информации об ошибке вызовите функцию GetLastError .

Комментарии

Строка, возвращаемая для целого атома (атома, созданного макросом MAKEINTATOM ), представляет собой завершающуюся нулем строку, в которой первым символом является символ фунта ('#'), а оставшиеся символы - беззнаковое целое, первоначально переданное в макрос MAKEINTATOM .

См. также

AddAtom, DeleteAtom, FindAtom, GlobalAddAtom, GlobalDeleteAtom, GlobalFindAtom, MAKEINTATOM .

InitAtomTable

Функция InitAtomTable инициализирует таблицу локальных атомов и задает ее размер.

BOOL InitAtomTable (

DWORD nSize // размер таблицы атомов

);

Параметры

nSize– задает размер, в количестве элементов, таблицы атомов. Этот параметр должен представлять собой простое число.

Поделиться с друзьями: