Win32 API. Глобальные функции Windows
Страница 5.


 
ChooseFont
BOOL ChooseFont(LPCHOOSEFONT lpcf);
Возвращаемое значение
Если пользователь нажимает кнопку OK в диалоговом окне Шрифт, возвращаемое значение не равно нулю. Выбор пользователя фиксируется в объекте структуры CHOOSEFONT. Если пользователь нажимает кнопку Cancel (Отмена) или закрывает диалоговое окно Шрифт (Font), данная функция возвращает нулевое значение. Для получения дополнительной информации используется вызов функции CommDlgExtendedError, возвращающей следующие значения: CDERR_FINDRESFAILURE, CDERR_INITIALIZATION, CDERR_LOCKRESFAILURE, CDERR_LOADRESFAILURE, CDERR_LOADSTRFAILURE, CDERR_MEMALLOCFAILURE, CDERR_MEMLOCKFAILURE, CDERR_NOHINSTANCE, CDERR_NOHOOK, CDERR_NOTEMPLATE, CDERR_STRUCTSIZE, CFERR_MAXLESSTHANMIN и CFERR_NOFONTS.
Аргументы
lpcf - указатель на объект структуры CHOOSEFONT, содержащий информацию об установках элементов управления в диалоговом окне.
Описание
Функция ChooseFont открывает стандартное диалоговое окно Шрифт (Font), позволяющее пользователю установить атрибуты логического шрифта. Эти атрибуты включают в себя начертание, стиль (жирный, курсив или обычный), размер шрифта, эффекты (подчеркивание, зачеркивание или цвет) и набор символов шрифта. В диалоговом окне Шрифт для обработки сообщений, посылаемых данному окну может быть использован объект класса CFHookProc. Для использования данного объекта установите флаг CF_ENABLEHOOK в переменной Flags, являющейся членом структуры CHOOSEFONT, поместите указатель на соответствующую функцию обратного вызова в переменную lpfnHook объект структуры CHOOSEFONT. Функция обратного вызова может посылать диалоговому окну сообщения WM_CHOOSEFONT_GETLOGFONT, WM_CHOOSEFONT_SETFLAGS и WM_CHOOSEFONT_SETLOGFONT для получения от него информации о текущих установках его элементов управления.
CloseHandle
BOOL CloseHandle(HANDLE hObject);
Возвращаемое значение
Ненулевое, если функция успешно завершает свою работу, и нулевое в противном случае. Дополнительную информацию по ошибке можно получить, вызвав функцию GetLastError.
Аргументы
hObject - дескриптор открытого объекта.
Описание
Функция CloseHandle уничтожает дескриптор открытого объекта. Данная функция уничтожает дескриптор объекта, уменьшает счетчик дескрипторов объекта и производит проверку этого счетчика. Как только значение счетчика становится равным нулю, объект удаляется из системы. Уничтожение дескриптора потока не приводит к завершению связанного с ним потока. Для уничтожения объекта потока необходимо сначала завершить выполнение потока, а затем уничтожить все его дескрипторы. Функция CloseHandle используется для уничтожения дескрипторов, полученных при вызове функции CreateFile. Для уничтожения дескрипторов, возвращаемых функцией FindFirstFile, используйте функцию FindClose. Уничтожение недопустимого дескриптора вызывает исключение. Это происходит, например, при повторном уничтожении дескриптора.
CreateEvent
HANDLE CreateEvent(LPSECURITY_ATTRIBUTES lpEventAttributes, BOOL bManualReset, BOOL bInitialState, LPCTSTR lpName);
Возвращаемое значение
В случае успешного завершения функции возвращается дескриптор объекта события. Если именованный объект события существовал до вызова данной функции, то функция возвращает дескриптор существующего объекта, а функция GetLastError возвращает значение ERROR_ALREADY_EXISTS. Если в процессе выполнения данной функции возникает ошибка, то возвращается нулевое значение. Дополнительную информацию по ошибке можно получить, вызвав функцию GetLastError.
Аргументы
lpEventAttributes - указатель на объект структуры SECURITY_ATTRIBUTES, определяющую, может ли возвращаемый дескриптор наследоваться дочерним процессом. Если данный аргумент имеет нулевое значение, то дескриптор не может наследоваться. В Windows NT переменная lpSecurityDescriptor, являющаяся членом структуры, определяет дескриптор безопасности нового объекта события. Если эта переменная равна нулю, то объект события использует дескриптор безопасности, заданный по умолчанию.
bManualReset - определяет ручной или автоматический сброс объекта события при его создании. Если этот аргумент имеет значение TRUE, то для сброса данного объекта события в неотмеченное состояние необходимо использовать функцию ResetEvent. В противном случае система автоматически сбрасывает состояние данного объекта события в неотмеченное, после освобождения единственного ждущего потока.
bInitialState - определяет начальное состояние объекта события. Если данный аргумент имеет значение TRUE, то данный объект события изначально отмечен.
lpName - указатель на заканчивающуюся нулем строку, содержащую имя объекта события. Длина данного имени ограничивается величиной MAX_PATH и может содержать любые символы кроме символа черты, наклоненной влево, используемой для разделения полей при задании пути к файлу. При сравнении имен учитывается регистр использованных символов.
Если аргумент lpName совпадает с именем существующего именованного объекта, данная функция запрашивает доступ к данному объекту в режиме EVENT_ALL_ACCESS. В этом случае значения аргументов bManualReset и bInitialState игнорируются. Если аргумент lpEventAttributes имеет ненулевое значение, он определяет возможность наследования дескриптора, но его дескриптор безопасности игнорируется. Если аргумент lpName имеет значение NULL, то создается неименованный объект события.
Если аргумент lpName совпадает с именем семафора, мютекса, таймера ожидания, задания или объекта карты файла (file-mapping object), функция прекращает свою работу, а функция GetLastError возвращает значение ERROR_INVALID_HANDLE. Это происходит потому, что эти объекты разделяют одно и то же пространство имен.
Описание
Функция CreateEvent позволяет создавать именованные и неименованные объекты событий. Дескриптор, возвращаемый данной функцией, имеет право доступа EVENT_ALL_ACCESS к новому объекту события и может быть использован любой функцией, имеющей в качестве аргумента дескриптор данного объекта. Любой поток вызывающего процесса может использовать дескриптор объекта события при вызове любой из функций ожидания. Функции ожидания, использующие один объект, возвращают свое значение после того, как будет отмечен соответствующий объект события. Функции ожидания, использующие несколько объектов, могут быть настроены таким образом, чтобы возвращать свое значение после того, как будет отмечен любой из связанных с нею объектов событий, или когда будут отмечены все эти объекты событий. После возвращения значения функцией ожидания ожидающий поток может продолжить свою работу. Начальное состояние объекта события определяется аргументом bInitialState. Для установления объекта события в отмеченное состояние используется функция SetEvent, а для сброса отмеченного состояния используется функция ResetEvent. Отмеченное состояние объекта события, созданного в режиме ручного сброса, остается таковым до вызова пользователем функции ResetEvent. Пока состояние объекта события остается отмеченным может быть возобновлена работа любого количества ждущих потоков или потоков, которые последовательно запускали операцию ожидания с использованием данного объекта события. Отмеченное состояние объекта события, созданного в режиме автоматического сброса, остается таковым до возобновления работы одного ожидающего потока. После этого система автоматически сбрасывает отмеченное состояние объекта события. Если ожидающие потоки отсутствуют, состояние объекта события остается отмеченным. Несколько процессов могут использовать дескрипторы одного объекта события, позволяющего этим процессам осуществлять взаимную синхронизацию. Возможно использование следующих механизмов разделения объектов:
функция CreateProcess создает дочерний процесс, который наследует дескриптор объекта события, если значение аргумента lpEventAttributes в функции CreateEvent допускает это наследование; процесс может передать дескриптор объекта события в аргументе функции DuplicateHandle создающей дубликат дескриптора, который может использоваться другим процессом; процесс может передать имя объекта события в аргументе функций OpenEvent или CreateEvent.
Для уничтожения дескриптора используется функция CloseHandle. Система автоматически уничтожает дескриптор при завершении процесса. Объект события уничтожается при уничтожении его последнего дескриптора.
CreateFontIndirect
HFONT CreateFontIndirect(CONST LOGFONT *lplf);
Возвращаемое значение
В случае успешного завершения функции, дескриптор логического шрифта, и нулевое значение в противном случае. В Windows NT более подробную информацию об ошибке можно получить, вызвав функцию GetLastError.
Аргументы
lplf - указатель на объект структуры LOGFONT, содержащий описание логического шрифта.
Описание
Функция CreateFontIndirect позволяет создать логический шрифт по его параметрам, заданным в объекте структуры LOGFONT. После этого созданный шрифт может выбираться в любой контекст устройства в качестве текущего шрифта. При выборе созданного шрифта в контекст устройства с использованием функции SelectObject интерфейс графических устройств Windows старается найти среди физических шрифтов такой, который бы максимально соответствовал параметрам заданного логического шрифта. В случае если ему не удается обеспечить полное соответствие, он использует шрифт, чьи параметры максимально соответствуют требуемым. После того, как приложение закончило работу с данным логическим шрифтом, необходимо вызвать функцию DeleteObject для его уничтожения.
DispatchMessage
LRESULT DispatchMessage(CONST MSG * lpmsg);
Возвращаемое значение
Возвращаемое значение совпадает с возвращаемым значением процедуры окна. Его трактовка зависит от обрабатываемого сообщения. Как правило, оно игнорируется.
Аргументы
lpmsg - указатель на объект структуры MSG, содержащей обрабатываемое сообщение.
Описание
Данная функция передает сообщение процедуре окна. Как правило, это сообщение было извлечено до этого функцией GetMessage. Объект структуры MSG должен содержать корректные значения сообщения. Если переменная lpmsg данного объекта структуры содержит указатель на сообщение WM_TIMER, то ее переменная lParam содержит указатель на функцию, вызываемую вместо процедуры окна.
 
« Предыдущая статья   Следующая статья »