Введение в API-программирование / Использование API / Visual C++ .NET
Введение в API-программирование
API это программный интерфейс приложения. Другими словами, это те возможности, которые предоставляет операционная система Windows для использования прикладными программыми. Системные функции, которые предоставляет Windows программисту, называются ещё функциями API. Программирование с использованием только этих функций называется API-программированием. В данной статье мы дадим достаточно широкое введение в API-программы.
Структура API-программ
Центральным понятием программирования в среде Windows является сообщение. Система посылает сообщение приложению, а то, в свою очередь, должно правильно отреагировать на него. Получателями сообщений являются функции окон приложения, на программирование которых и уходит большая часть времени при разработки API-приложений.
Классическая структура API-программы определяется четырьмя компонентами: инициализация; цикл ожидания, или цикл обработки сообщений; функция главного окна; другие функции. В простейшем случае последний компонент может отсутствовать. Два первых компонента распологаятся в функции WinMain. Итак, все по порядку.
Функция WinMain
Функция WinMain вызывается системой, в которую передаются четыре параметра:
- hInstance — дискриптор текушего экземпляра приложения.
- hPrevInctance — всегда равен NULL.
- lpCmdLine — указатель на командную строку запускаемой программы.
- nCmdShow — способ визуализации окна.
Инициализация
Если кратко, то здесь производится регистрация класса окон, его создание и вывод на икран. Регистрация классв окон осуществляется функцией:
Пусть вас не смущает тип ATOM, для нас это просто int. Единственный параметр функции указатель на структуру WNDCLASS. После того как класс будет зарегестрировани, окно из данного класса может быть создано функцией CreateWindow. Разберём теперь структуру WNDCLASS:
Как видите, в структуре нет ничего сложного. Если регистрация прошла успешно, о чём мы узнаем по нулевому возвращенному значению, значит можно создавать окно.
Перечислим некоторые типичные значения членов структуры:
- Стили класса окон. Стиль окна определяется комбинацией нескольких предопределённых констант. Довольно часто он пологается нулю, что означает «стиль по умолчанию».
- Дискриптор иконки окна. Определяется с помощью функции LoadIcon. Первым параметром данной функции является дискриптор приложения, вторы — строка, определяющая имя иконки в ресурсах. Для того чтобы чтобы задать одну из стандартных иконок, первый параметр должен иметь значение NULL, а второй значение одной из следующих констант: IDI_APLICATION — стандартнаю иконка приложения; IDI_ASTERISK — иконка «информация»; IDI_EXCLAMATION — «восклицательный знак»; IDI_HAND — «знак Стоп»; IDI_QUESTION — «вопросительный знак».
- Дискриптор курсора. Для определения курсора используется API-функция LoadCursor. Функция похожа на функцию LoadIcon.
- Имя класса. Название класса — это просто строка, которая потом используется при создании окна.
Со значениями других членов структуры мы познакомимся позднее.
Окно создаётся функцией CreteWindow. Вот прототип этой функции:
Использование данной функции мы разберём позднее. Главное здесь то, что функция возвращает дискриптор созданного окна, при ошибке — 0.
Для того чтобы корректно отобразить окно на экране, следует выполнить ещё две функции.
BOOL ShowWindow(HWND hWnd, int nCmdShow) — эта функция отображает окно на экране. Первый параметр — дискриптор окна, второй — режим отображения. В качестве этого параметра обычно используют параметр nWinMode функции WinMain. Можно также использовать предопределённые константы:
- SW_HIDE — скрыть окно
- SW_MAXIMIZE — максимизировать окно
- SW_MINIMIZE — минимизировать окно и активировать самое верхнее окно
- SW_RESTORE — отобразить окно в нормальном состоянии
- SW_SHOW — активизировать окнос текущими разменами
- SW_SHOWMAXIMIZED — максимизировать окно и сделать его активным
- SW_SHOWMINIMIZED — минимизировать окно
- SW_SHOWNA — отобразить окно в его текущем состоянии. При этом активированое окно оставить активным.
- SW_SHOWNOACTIVATE — востанавливает окно в его предыдушем состоянии. При этом активное окно остаётся активным.
- SW_SHOWNORMAL — активизировать и востановить окно в прежних размерах.
BOOL UpdateWindow(HWND hWnd) — вызов данной функции приводит к немедленной перерисовке окна и посылке функции окна сообщения WM_PAINT.
Цикл обработки сообщений
Цикл обработки сообщений присутствует во всех проложеният Windows. Правда, не всегда этот цикл представлен явно в программе.
В цикле сообщения присутствует три функции. Эти функции есть там всегда, но кроме них в цикле могут быть и другие. Функция GetMessage выбирает из очереди сообщений приложения очередное приложение. вместо этой функции используют так же функции PostMessage и PeekMessage.
Во всех трех функциях присутствует указатель на строку MSG. Разберём её:
- hwnd — дискриптор окна.
- message — код сообщения.
- wParam — дополнительный параметр.
- lParam — дополнительный параметр.
- time — время посылки сообщения.
- pt — положение курсора мыши.
Прототип функции MessageBox.
Первый параметр функции — указатель на строку MSG, куда и будет помещена получаемая информация. Вторым параметром является дискриптор окна, которому предназначено сообщение. Если параметр равен NULL, то «отталкиваются» все сообщения, получаемые приложением. Два последних параметра определяют диапазон сообщений. Для того чтобы получать сообщения из всего диапазона, эти параметры должны быть равны 0.
Функция TransleteMessage преабразует сообщения WM_KEYDOWN и WM_KEYUP в WM_CHAR. Функция DispatchMessage просто переправляет сообщение оконной процедуре.
Оконная функция
Это еще один компонент отвечающий за обработку сообщений окна. Эта функция вызывается системой и имеет четыре параметра, совпадающих с первыми четырбмя членами структуры MSG. Искуство API-программирования заключается в основном в написании оконных функций. Вот пример оконной функции:
Примеры
Среда Visual C++ оказывает некоторую помощь желающим написать API-программы. Вы можете воспользоваться одной из двух возможностей. В списке проектов выбираем Win32 Project и далее следуем одним из двух путей: отменить флажок Empty project или нет. Если не отмечать флажок, то система создаст простейшее оконное приложение с минимальной функциональностью, позволяющей, однако, развивать ваш проект и создавать приложения любой степени сложности.
И так, начнём. Выбираем путь, простой проект. Откроем окно Solution Explorer. Как и следовало ожидать, проект пуст. Щелкним правой кнопкой мыщи по строке проекта и выбирем пункт Add new Item, тип файла — CPP и введём имя api1.cpp. Теперь мы свами можем воспользоваться тем что с вами иже узнали. Как сидите мы обощлись минимальным количеством файлов. Пожключаемый файл windows.h содержит определения всех API-функций, а также необходимых для их использования констант и типов данных. Вот код этой программы:
Purely functional
Страницы
четверг, 5 января 2012 г.
Введение в Windows Sockets API: Проект программы
Конечная программа будет сочетать в себе как функционал клиентских приложений, так и серверных. То есть будет не только подключаться к сторонним процессам, но и сама принимать входящие подключения.
Компоненты
Программу можно условно разделить на пять компонентов: ввод (input), вывод (output), обработка ввода (handler), контроллер (system) и небольшая библиотека функция для работы с сокетами (socket_lib).
Ввод/вывод данных осуществляется через стандартные потоки ввода/вывода.
Компонент handler занимается обработкой ввода пользователя, устанавливая систему команд и накладывая ограничения на нее.
Контроллер непосредственно выполняет работу, которую задает пользователь через систему команд, используя доступные функции из компонента socket_lib, и выводит информацию пользователю о результатах этой работы.
Отношения между компонентами наглядно отображены на прилагаемом рисунке, где стрелками указано направление передачи управления программой.
Функциональность
Теперь необходимо определиться с тем, что должна делать программа. Так как она сочетает в себе одновременно функции клиента и сервера, то список функций примерно следующий:
- Создать сервер
- Отправить сообщение
- Вывод информации о текущем подключении
- Вывод истории подключений
Программа может держать одновременно только одно подключение (внешнее или исходящее). Реализация поддержки множества одновременных подключений требует использование потоков, что выходит за рамки этой серии статей и усложняет программу.
Система команд
После того как определились с функционалом программы, необходимо составить систему команд для пользователей, соответствующую функционалу. В нашем случае система команд будет состоять из четырех команд с аргументами:
- create_serverport — создает слушающий сокет и привязывает его к порту port на текущем компьютере.
- sendipportmess — отправляет сообщение mess к процессу, запущенному по адресу ip:port. В качестве ip можно указать 127.0.0.1, что позволит отправить сообщение другому процессу запущенному на текущей (локальной) машине или самому себе, если указать порт к которому привязан слушающий сокет текущего процесса.
- show_connection — отображает информацию о текущем подключении.
- show_history — отображает историю подключений.
Заключение
В следующей статье я непосредственно расскажу о реализации программы по техническому заданию, которое было косвенно изложено в этой статье, и выложу ее полный исходный код.
Введение
Windows API— набор функций операционной системы
Аббревиатура API многим начинающим программистам кажется весьма таинственной и даже пугающей. На самом же деле Application Programming Interface (API)— это просто некоторый готовый набор функций, который могут использовать разработчики приложений. В общем случае данное понятие эквивалентно тому, что раньше чаще называли библиотекой подпрограмм. Однако обычно под API подразумевается особая категория таких библиотек. программа приложение windows
В ходе разработки практически любого достаточно сложного приложения (MyAppication) для конечного пользователя формируется набор специфических внутренних функций, используемых для реализации данной конкретной программы, который называется MyApplication API. Однако часто оказывается, что эти функции могут эффективно использоваться и для создания других приложений, в том числе другими программистами. В этом случае авторы, исходя из стратегии продвижения своего продукта, должны решить вопрос: открывают они доступ к этому набору для внешних пользователей или нет? При утвердительном ответе в описании программного пакета в качестве положительной характеристики появляется фраза: «Комплект включает открытый набор API-функций» (но иногда за дополнительные деньги).
Таким образом, чаще всего под API подразумевается набор функций, являющихся частью одного приложения, но при этом доступных для использования в других программах. Например, Excel, кроме интерфейса для конечного пользователя, имеет набор функций Excel API, который может использоваться, в частности, при создании приложений с помощью VB.
Соответственно Windows API— это набор функций, являющийся частью самой операционной системы и в то же время— доступный для любого другого приложения, в том числе написанного с помощью VB. В этом плане вполне оправданна аналогия с набором системных прерываний BIOS/DOS, который фактически представляет собой DOS API.
Отличие заключается в том, что состав функций Windows API, с одной стороны, значительно шире по сравнению с DOS, с другой — не включает многие средства прямого управления ресурсами компьютера, которые были доступны программистам в предыдущей ОС. Кроме того, обращение к Windows API выполняется с помощью обыкновенных процедурных обращений, а вызов функций DOS— через специальную машинную команду процессора, которая называется Interrupt («прерывание»).
Написать консольное приложение, обрабатывающее сигналы от клавиатуры и мыши, с использованием API-функций.
Работа с функциями Windows API и DLL
Windows API — наиболее важная и мощная дополнительная библиотека функций, доступная каждому VB-программисту. Многие из них, в том числе и опытные разработчики, работают с функциями Windows API, используя простые готовые решения, почерпнутые из различных книг и журналов (возможно, и в нашей постоянной рубрике «Советы для тех, кто программирует на VB»), и не очень задумываясь о сути этой технологии. Такой подход является достаточным при решении простых задач, но для серьезной работы предпочтительнее более детально разобраться с основными принципами использования функций Windows API. Этим мы сейчас и займемся.
Windows API — набор функций операционной системы
Аббревиатура API многим начинающим программистам кажется весьма таинственной и даже пугающей. На самом же деле Application Programming Interface (API) — это просто некоторый готовый набор функций, который могут использовать разработчики приложений. В общем случае данное понятие эквивалентно тому, что раньше чаще называли библиотекой подпрограмм. Однако обычно под API подразумевается особая категория таких библиотек.
В ходе разработки практически любого достаточно сложного приложения (MyAppication) для конечного пользователя формируется набор специфических внутренних функций, используемых для реализации данной конкретной программы, который называется MyApplication API. Однако часто оказывается, что эти функции могут эффективно использоваться и для создания других приложений, в том числе другими программистами. В этом случае авторы, исходя из стратегии продвижения своего продукта, должны решить вопрос: открывают они доступ к этому набору для внешних пользователей или нет? При утвердительном ответе в описании программного пакета в качестве положительной характеристики появляется фраза: «Комплект включает открытый набор API-функций» (но иногда за дополнительные деньги).
Таким образом, чаще всего под API подразумевается набор функций, являющихся частью одного приложения, но при этом доступных для использования в других программах. Например, Excel, кроме интерфейса для конечного пользователя, имеет набор функций Excel API, который может использоваться, в частности, при создании приложений с помощью VB.
Соответственно Windows API — это набор функций, являющийся частью самой операционной системы и в то же время — доступный для любого другого приложения, в том числе написанного с помощью VB. В этом плане вполне оправданна аналогия с набором системных прерываний BIOS/DOS, который фактически представляет собой DOS API.
Отличие заключается в том, что состав функций Windows API, с одной стороны, значительно шире по сравнению с DOS, с другой — не включает многие средства прямого управления ресурсами компьютера, которые были доступны программистам в предыдущей ОС. Кроме того, обращение к Windows API выполняется с помощью обыкновенных процедурных обращений, а вызов функций DOS — через специальную машинную команду процессора, которая называется Interrupt («прерывание»).
Win16 API и Win32 API
Как известно, смена Windows 3.x на Windows 95 ознаменовала собой переход от 16-разрядной архитектуры операционной системы к 32-разрядной. Одновременно произошла замена 16-разрядного Windows API (Win16 API) на новый 32-разрядный вариант (Win32 API) — о некоторых аспектах этого перехода будет упомянуто в этой главе. В данном случае нужно просто иметь в виду, что, за небольшим исключением, набор Win32 API является единым для семейств Windows 9x и Windows NT.
Далее в этой статье под термином API будет подразумеваться Win API, более того, по умолчанию — Win32 API.
Зачем нужен Win API для VB-программистов
Несмотря на то что VB обладает огромным множеством разнообразных функций, в процессе более-менее серьезной разработки обнаруживается, что их возможностей зачастую не достаточно для решения необходимых задач. При этом программисты-новички часто начинают жаловаться на недостатки VB и подумывать о смене инструмента, не подозревая, что на их компьютере имеется огромный набор средств и нужно только уметь ими воспользоваться.
При знакомстве с Win API обнаруживается, что многие встроенные VB-функции — не что иное, как обращение к соответствующим системным процедурам, но только реализованное в виде синтаксиса данного языка. С учетом этого необходимость использования API определяется следующим вариантами:
- API-функции, которые полностью реализованы в виде встроенных VB-функций. Тем не менее иногда и в этом случае бывает полезным перейти к применению API, так как это позволяет порой существенно повысить производительность (в частности, за счет отсутствия ненужных преобразований передаваемых параметров).
- Встроенные VB-функции реализуют лишь частный случай соответствующей API-функции. Это довольно обычный вариант. Например, API-функция CreateDirectory обладает более широкими возможностями по сравнению со встроенным VB-оператором MkDir.
- Огромное число API-функций вообще не имеет аналогов в существующем сегодня варианте языка VB. Например, удалить каталог средствами VB нельзя — для этого нужно использовать функцию DeleteDirectory.
Следует также подчеркнуть, что некоторые API-функции (их доля в Win API весьма незначительна) не могут вызываться из VB-программ из-за ряда ограничений языка, например из-за отсутствия возможности работы с адресами памяти. Но в ряде случаев могут помочь нетривиальные приемы программирования (в частности, в случае с теми же адресами).
Личная точка зрения автора такова — вместо расширения от версии к версии встроенных функций VВ следовало бы давать хорошее описание наиболее ходовых API-функций. В то же время хочется посоветовать разработчикам не ждать появления новой версии средства с расширенными функциями, а внимательнее изучить состав существующего Win API — вполне вероятно, что нужные вам возможности можно было реализовать уже в версии VB 1.0 выпуска 1991 года.
Как изучать Win API
Это не такой простой вопрос, если учесть, что число функций Win32 API оценивается величиной порядка 10 тысяч (точной цифры не знает никто, даже Microsoft).
В состав VB (версий 4-6) входит файл с описанием объявлений Win API — WIN32API.TXT (подробнее о его применении мы расскажем позднее). Но, во-первых, с его помощью можно получить сведения о назначении той или иной функции и ее параметрах только по используемым мнемоническим именам, а во-вторых — перечень функций в этом файле далеко не полный. В свое время (семь лет назад) в VB 3.0 имелись специальные справочные файлы с описанием функций Win16 API. Однако уже в v.4.0 эта полезная информация с удобным интерфейсом исчезла.
Исчерпывающую информацию о Win32 API можно найти в справочной системе Platform Software Development Kit, которая, в частности, находится на компакт-дисках MSDN Library, включенных в состав VB 5.0 и 6.0 Enterprise Edition и Office 2000 Developer Edition. Однако разыскать там нужную информацию и разобраться в ней совсем не просто. Не говоря уж о том, что все описания там приводятся применительно к языку C.
Общепризнанным в мире пособием для изучения API-программирования в среде VB являются книги известного американского эксперта Даниэля Эпплмана (Daniel Appleman). Его серия Dan Appleman’s Visual Basic Programmer’s Guide to the Windows API (для Win16, Win32, применительно к разным версиям VB) с 1993 года неизменно входит в число бестселлеров для VB-программистов. Книгу Dan Appleman’s VB 5.0 Programmer’s Guide to the Win32 API, выпущенную в 1997 году, автору привез из США приятель, который нашел ее в первом же книжном магазине небольшого провинциального городка.
Эта книга объемом свыше 1500 страниц включает описание общей методики API-программирования в среде VB, а также более 900 функций. Прилагаемый компакт-диск содержит полный текст книги и всех программных примеров, а кроме того, несколько дополнительных глав, не вошедших в печатный вариант. В 1999 году Дэн Эпплман выпустил новую книгу Dan Appleman’s Win32 API Puzzle Book and Tutorial for Visual Basic Programmers, которая включает сведения о еще 7600 функциях (хотя и не столь обстоятельные).
Win API и Dynamic Link Library (DLL)
Набор Win API реализован в виде динамических DLL-библиотек. Далее речь фактически пойдет о технологии использования DLL в среде VB на примере библиотек, входящих в состав Win API. Однако, говоря о DLL, необходимо сделать несколько важных замечаний.
В данном случае под DLL мы подразумеваем традиционный вариант двоичных динамических библиотек, которые обеспечивают прямое обращение приложений к нужным процедурам — подпрограммам или функциям (примерно так же, как это происходит при вызове процедур внутри VB-проекта). Такие библиотеки могут создаваться с помощью разных инструментов: VC++, Delphi, Fortran, кроме VB (посмотрим, что появится в версии 7.0) — последний может делать только ActiveX DLL, доступ к которым выполняется через интерфейс OLE Automation.
Обычно файлы динамических библиотек имеют расширение .DLL, но это совсем не обязательно (для Win16 часто применялось расширение .EXE); драйверы внешних устройств обозначаются с помощью .DRV.
Как мы уже отмечали, определить точное число API-функций Windows и содержащих их файлов достаточно сложно, однако все они находятся в системном каталоге. В этом плане лучше выделить состав библиотек, входящих в ядро операционной системы, и основных библиотек с ключевыми дополнительными функциями.
А теперь несколько советов.
Совет 1. Следите за правильным оформлением объявления DLL-процедур
Само обращение к DLL-процедурам в программе выглядит точно так же, как к «обычным» процедурам Visual Basic, например:
Однако для использования внешних DLL-функций (в том числе и Win API) их нужно обязательно объявить в программе с помощью оператора Declare, который имеет следующий вид:
Здесь в квадратных скобках приведены необязательные элементы оператора, курсивом выделены переменные выражения, остальные слова — ключевые. В справочной системе приведено достаточно хорошее описание синтаксиса оператора, поэтому сейчас мы только отметим некоторые моменты.
Объявления внешних функций должны размещаться в секции General Declarations модуля. Если вы размещаете его в модуле формы, то обязательно нужно указать ключевое слово Private (это объявление будет доступно только внутри данного модуля) — таково ограничение для всех процедур модуля формы.
Набор Win32 API реализован только в виде функций (в Win16 API было много подпрограмм Sub). В большинстве своем — это функции типа Long, которые чаще всего возвращают код завершения операции.
Оператор Declare появился в MS Basic еще во времена DOS, причем он использовался и для объявления внутренних процедур проекта. В Visual Basic этого не требуется, так как объявлением внутренних процедур автоматически является их описание Sub или Function. По сравнению с Basic/DOS в новом описании обязательно указывать имя файла-библиотеки, где находится искомая процедура. Библиотеки Wip API размещаются в системном каталоге Windows, поэтому достаточно привести только название файла. Если же вы обращаетесь к DLL, которая находится в произвольном месте, нужно записать полный путь к данному файлу.
Описание оператора Declare обычно занимает довольно много места и не помещается в одну строку в окне кода. Поэтому мы рекомендуем придерживаться при написании приложений какой-либо определенной схемы переноса строк, например:
В этом случае все основные элементы описания разнесены на разные строчки и поэтому хорошо читаются.
Совет 2. Будьте особенно внимательны при работе с DLL-функциями
Использование Win API и разнообразных DLL-функций существенно расширяет функциональные возможности VB и зачастую позволяет повысить производительность программ. Однако расплата за это — риск снижения надежности работы приложения, особенно в процессе его отладки.
Одним из самых важных достоинств среды VB является надежность процесса разработки программ: функционируя под управлением интерпретатора, программный код теоретически не может нарушить работу Windows и самого VB. Программист может не очень внимательно следить за правильностью передачи параметров в вызываемые функции — подобные ошибки будут легко обнаружены самим интерпретатором либо в процессе трансляции кода, либо во время его выполнения. В самом неприятном случае просто произойдет прерывание режима обработки, причем с указанием, где и почему произошла ошибка.
Использование напрямую функций Windows API или других DLL-библиотек снимает такой контроль за передачей данных и процессом выполнения кода вне среды VB. Поэтому ошибка в обращении к внешним функциям может привести к неработоспособности и VB и операционной системы. Это особенно актуально на этапе разработки программы, когда наличие ошибок — дело вполне естественное. Таким образом, применяя более широкие возможности функций базового слоя системы, программист берет на себя ответственность за правильность их применения.
Проблема усугубляется еще и тем, что разные языки программирования используют различные способы передачи параметров между процедурами. (Точнее, разные способы передачи используются по умолчанию, так как многие языки могут поддерживать несколько способов.) Win API реализованы на C/C++ и применяют соглашения о передаче параметров, принятые в этой системе, которые отличаются от привычного для VB варианта.
В связи с этим следует отметить, что появление встроенных в VB аналогов API-функций оправданно именно адаптацией последних к синтаксису VB и реализацией соответствующего механизма контроля обмена данными. Обратим также внимание, что на этапе опытной отладки приложения при создании исполняемого модуля лучше использовать вариант компиляции P-code вместо Native Code (машинный код). В первом случае программа будет работать под управлением интерпретатора — медленнее по сравнению с машинным кодом, но более надежно с точки зрения возможного ошибочного воздействия на операционную систему и обеспечивая более удобный режим выявления возможных ошибок.
Совет 3. Десять рекомендаций Дэна Эпплмана по надежному API-программированию в среде VB
Использование функции API требует более внимательного программирования с использованием некоторых не очень привычных методов обращения к процедурам (по сравнению с VB). Далее мы будем постоянно обращаться к этим вопросам. А сейчас приведем изложение сформулированных Дэном Эпплманом советов на эту тему (их первый вариант появился еще в 1993 году) с некоторыми нашими дополнениями и комментариями.
1. Помните о ByVal. Наиболее частая ошибка, совершаемая при обращении к функциям API и DLL, заключается в некорректном использовании ключевого слова ByVal: его или забывают ставить, или, наоборот, ставят, когда в нем нет необходимости.
На этих примерах показано влияние оператора ByVal на передачу параметров
Тип параметра | С ByVal | Без ByVal |
---|---|---|
Integer | В стек помещается 16-разрядное целое | В стек помещается 32-разрядный адрес 16-разрядного целого |
Long | В стек помещается 32-разрядное целое | В стек помещается 32-разрядный адрес 32-разрядного целого |
String | Строка преобразуется в формат, используемый в С (данные и завершающий нулевой байт). 32-разрядный адрес новой строки помещается в стек | В стек помещается VB-дескриптор строки. (Такие дескрипторы никогда не используются самим Windows API и распознаются только в DLL, реализованных специально для VB.) |
Здесь следует напомнить, что передача параметров в любой системе программирования, в том числе и VB, выполняется двумя основными путями: по ссылке (ByRef) или по значению (ByVal). В первом случае передается адрес переменной (этот вариант используется в VB по умолчанию), во втором — ее величина. Принципиальное отличие заключается в том, что с помощью ссылки обеспечивается возврат в вызывающую программу измененного значения передаваемого параметра.
Чтобы разобраться в этом, проведите эксперимент с помощью таких программ:
Запустив на выполнение этот пример, вы получите сообщение со значением переменной, равным 3. Дело в том, что в данном случае в подпрограмму MyProc передается адрес переменной v, физически созданной в вызывающей программе. Теперь измените описание процедуры на
В результате при выполнении теста вы получите v = 2, потому что в процедуру передается лишь исходное значение переменной — результат выполненных с ним операций не возвращается в вызывающую программу. Режим передачи по значению можно поменять также с помощью оператора Call следующим образом:
Однако при обращении к внутренним VB-процедурам использование в операторе Call ключевого слова ByVal запрещено — вместо него применяются круглые скобки. Этому есть свое объяснение.
В классическом случае (С, Fortran, Pascal) различие режимов ByRef и ByVal зависит от того, что именно помещается в стек обмена данными — адрес переменной или ее значение. В Basic исторически используется вариант программной эмуляции ByVal — в стеке всегда находится адрес, но только при передаче по значению для этого создается временная переменная. Чтобы отличить два этих варианта (классический и Basic), используются разные способы описания режима ByVal. Отметим, что эмуляция режима ByVal в VB обеспечивает более высокую надежность программы: перепутав форму обращения, программист рискует лишь тем, что в вызывающую программу вернется (или не вернется) исправленное значение переменной. В «классическом» же варианте такая путаница может привести к фатальной ошибке при выполнении процедуры (например, когда вместо адреса памяти будет использоваться значение переменной, равное, скажем, нулю).
DLL-функции реализованы по «классическим» принципам и поэтому требуют обязательного описания того, каким образом происходит обмен данными с каждым из аргументов. Именно этой цели служат объявления функций через описание Declare (точнее, списка передаваемых аргументов). Чаще всего передача параметров в функцию Windows API или DLL выполняется с помощью ключевого слова ByVal. Причем оно может быть задано как в операторе Declare, так и непосредственно при вызове функции.
Последствия неправильной передачи параметров легко предугадать. В случае получения явно недопустимого адреса вам будет выдано сообщение GPF (General Protection Fault — ошибка защиты памяти). Если же функция получит значение, совпадающее с допустимым адресом, то функция API залезет в чужую область (например, в ядро Windows) со всеми вытекающими отсюда катастрофическими последствиями.
2. Проверяйте тип передаваемых параметров. Не менее важны верное число и тип передаваемых параметров. Необходимо, чтобы объявленные в Declare аргументы соответствовали ожидаемым параметрам в функции API. Наиболее часто встречающийся случай ошибки в передаче параметров связан с различием между NULL и строкой нулевой длины — следует помнить, что это не одно и то же.
3. Проверяйте тип возвращаемого значения.
VB довольно терпимо относится к несовпадению типов возвращаемых функцией значений, поскольку числовые значения обычно возвращаются через регистры, а не через стек. Следующие правила помогут определить корректное значение, возвращаемое функцией API:
- DLL-функция, не возвращающая значения (аналог void в ‘C’), должна быть объявлена как VB Sub.
- функция API, возвращающая целое значение (Integer или Long), может быть определена или как Sub, или как Function, возвращающая значение соответствующего типа.
- ни одна из функций API не возвращает числа с плавающей точкой, но некоторые DLL вполне могут возвращать такой тип данных.
4. С большой осторожностью используйте конструкцию «As Any». Множество функций Windows API имеют возможность принимать параметры различных типов и используют при этом обращение с применением конструкции As Any (интерпретация типа выполняется в зависимости от значения других передаваемых параметров).
Хорошим решением в этом случае может быть использование нескольких псевдонимов (Alias) функции с созданием двух и более объявлений для одной и той же функции, причем в каждом из описаний указываются параметры определенного типа.
5. Не забывайте инициализировать строки. В Win API существует множество функций, возвращающих информацию путем загрузки данных в передаваемые как параметр строковые буферы. В своей программе вы можете вроде бы все сделать правильно: не забыть о ByVal, верно передать параметры в функцию. Но Windows не может проверить, насколько велик размер выделенного под строку участка памяти. Размер строки должен быть достаточным для размещения всех данных, которые могут быть в него помещены. Ответственность за резервирование буфера нужного размера лежит на VB-программисте.
Следует отметить, что в 32-разрядных Windows при использовании строк производится преобразование из Unicode (двухбайтовая кодировка) в ANSI (однобайтовая) и обратно, причем с учетом национальных установок системы. Поэтому для резервирования буферов порой удобнее использовать байтовые массивы вместо строковых переменных. (Подробнее об этом будет рассказано ниже.)
Чаще всего функции Win API позволяют вам самим определить максимальный размер блока. В частности, иногда для этого нужно вызвать другую функцию API, которая «подскажет» размер блока. Например, GetWindowTextLength позволяет определить размер строки, необходимый для размещения заголовка окна, получаемого функцией GetWindowText. В этом случае Windows гарантирует, что вы не выйдете за границу.
6. Обязательно используйте Option Explicit.
7. Внимательно проверяйте значения параметров и возвращаемых величин. VB обладает хорошими возможностями по проверке типов. Это означает, что, когда вы пытаетесь передать неверный параметр в функцию VB, самое плохое, что может случиться, — вы получите сообщение об ошибке от VB. Но данный механизм, к сожалению, не работает при обращении к функциям Windows API.
Windows 9x обладает усовершенствованной системой проверки параметров для большинства функций API. Поэтому наличие ошибки в данных обычно не вызывает фатальной ошибки, однако определить, что же явилось ее причиной — не так-то просто.
Здесь можно посоветовать использовать несколько способов отладки ошибки данного типа:
- используйте пошаговый режим отладки или команду Debug.Print для проверки каждого подозрительного вызова функции API. Проверьте результаты этих вызовов, чтобы удостовериться, что все в пределах нормы и функция корректно завершилась;
- используйте Windows-отладчик типа CodeView и отладочную версию Windows (имеется в Windows SDK). Эти средства могут обнаружить ошибку параметров и по меньшей мере определить, какая функция API приводит к ошибке;
- используйте дополнительные средства третьих фирм для проверки типов параметров и допустимости их значений. Такие средства могут не только находить ошибки параметров, но даже указать на строку кода VB, где произошла ошибка.
Кроме того, нужно обязательно проверять результат выполнения API-функции.
8. Помните, что целые числа в VB и в Windows — не одно и то же. В первую очередь следует иметь в виду, что под термином «Integer» в VB понимается 16-разрядное число, в документации Win 32 — 32-разрядное. Во-вторых, целые числа (Integer и Long) в VB — это величины со знаком (то есть один разряд используется как знак, остальные — как мантисса числа), в Windows — используются только неотрицательные числа. Это обстоятельство нужно иметь в виду, когда вы формируете передаваемый параметр с помощью арифметических операций (например, вычисляете адрес с помощью суммирования некоторой базы и смещения). Для этого стандартные арифметические функции VB не годятся. Как быть в этом случае, мы поговорим отдельно.
9. Внимательно следите за именами функций. В отличие от Win16 имена всех функций Win32 API являются чувствительными к точному использованию строчных и прописных букв (в Win16 такого не было). Если вы где-то применяете строчную букву вместо прописной или наоборот, то нужная функция не будет найдена. Следите также за правильным использованием суффикса A или W в функциях, применяющих строковые параметры. (Подробнее об этом – см. ниже.)
10. Чаще сохраняйте результаты работы. Ошибки, связанные с неверным использованием DLL и Win API, могут приводить к аварийному завершению работы VB-среды, а возможно — и всей операционной системы. Вы должны позаботиться о том, чтобы написанный вами код перед тестовым запуском был сохранен. Самое простое — это установить режим автоматической записи модулей проекта перед запуском проекта в среде VB.
Совет 4. Не нужно бояться применять Win API
После прочтения предыдущего совета может возникнуть мысль, что использование функций Win API — дело рискованное. В какой-то степени это так, но только в сравнении с безопасным программированием, предоставляемым самим VB. Но при умелом их применении и знании возможных подводных камней этот риск минимален. К тому же полностью отказаться от применения Win API зачастую просто невозможно — они все равно потребуются при сколь-нибудь серьезной разработке.
К тому же ранее мы упоминали о «подводных» камнях для широкого класса DLL. В случае с Win API все обстоит гораздо проще, так как здесь четко унифицирована форма обращения к этим функциям. При этом следует иметь в виду следующие основные моменты:
-
Функции Win32 API являются именно функциями, то есть процедурами типа Function (в Win16 API было много подпрограмм Sub). Все это функции типа Long, поэтому их описания записываются в следующем виде:
Обращение к API-функции выглядит так:
- Чаще всего возвращаемое значение функции является кодом завершения операции. Причем ненулевое значение означает в данном случае нормальное завершение, нулевое — ошибку. Обычно (но не всегда) уточнить характер ошибки можно с помощью обращения к функции GetLastError. Описание этой функции имеет такой вид:
ВНИМАНИЕ! При работе в среде VB для получения значения уточненного кода ошибки лучше использовать свойство LastDLLError объекта Err, так как иногда VB обнуляет функцию GetLastError в промежутке между обращением к API и продолжением выполнения программы.
Интерпретировать код, возвращаемый GelLastError, можно с помощью констант, записанных в файле API32.TXT, с именами, начинающимися с суффикса ERROR_.
Наиболее типичные ошибки имеют следующие коды:
-
ERROR_INVAL >Однако многие функции возвращают значение некоторого запрашиваемого параметра (например, OpenFile возвращает значение описателя файла). В таких случаях ошибка определяется каким-либо другим специальным значением Return&, чаще всего 0 или –1.
Win32 API используют строго фиксированные способы передачи самых простых типов данных.
С помощью переменных типа Long выполняется не менее 80% передачи аргументов. Обратите внимание, что аргумент всегда сопровождается ключевым словом ByVal, а это, кроме всего прочего, означает, что выполняется односторонняя передача данных — от VB-программы к API-функции.
Этот тип передачи данных также встречается достаточно часто, причем с аргументом также всегда применяется ByVal. При вызове API-функции в стек записывается адрес строки, поэтому в данном случае возможен двусторонний обмен данными. При работе со строками нужно учитывать несколько опасностей.
Первая — резервирование памяти под строку производится в вызывающей программе, поэтому если API-функция будет заполнять строки, то нужно перед ее вызовом создать строку необходимого размера. Например, функция GetWindowsDirectory возвращает путь к каталогу Windows, который по определению не должен занимать более 144 символов. Соответственно обращение к этой функции должно выглядеть примерно так:
Вторая проблема заключается в том, что при обращении к API-функции производится преобразование исходной строки в ее некоторое внутреннее представление, а при выходе из функции — наоборот. Если во времена Win16 эта операция заключалась лишь в добавлении нулевого байта в конце строки, то с появлением Win32 к этому добавилась трансформация двухбайтной кодировки Unicode в ANSI и наоборот. (Об этом подробно говорилось в статье «Особенности работы со строковыми переменными в VB», КомпьютерПресс 10’99 и 01’2000). Сейчас же только отметим, что с помощью конструкции ByVal . As String можно обмениваться строками только с символьными данными.
Это означает, что в стек будет помещен некоторый адрес буфера памяти, интерпретация содержимого которого будет выполняться API-функцией, например, в зависимости от значения других аргументов. Однако As Any может использоваться только в операторе Declare — при конкретном обращении к функции в качестве аргумента должна быть определена конкретная переменная.
Такая конструкция также часто применяется, когда необходимо обменяться данными (в общем случае в обе стороны) с помощью некоторой структуры. На самом деле эта конструкция — некий вид конкретной реализации формы передачи As Any, просто в данном случае функция настроена на фиксированную структуру.
Форма структуры данных определяется конкретной API-функцией, и на программисте лежит ответственность правильным образом описать и зарезервировать ее в вызывающей программе. Такая конструкция всегда используется без слова ByVal, то есть в данном случае выполняется передача по ссылке — в стек записывается адрес переменной.
Пример обращения к API-функции
Проиллюстрируем сказанное выше на примере использования двух полезных функций работы с файлами — lopen и lread, которые описываются следующим образом:
В VB их аналогами — в данном случае точными — являются операторы Open и Get (для режима Binary). Обратим сразу внимание на использование ключевого слова Alias в объявлении функции — это как раз тот случай, когда без него не обойтись. Настоящие названия функции в библиотеке начинаются с символа подчеркивания (типичный стиль для языка C), что не разрешается в VB.
Операция открытия файла может выглядеть следующим образом:
Здесь нужно обратить внимание на два момента:
- в качестве значения функции мы получаем значение описателя файла. Ошибке соответствует значение –1;
- как раз в данном случае не срабатывает обращение к функции GetLastError — для получения уточненного значения ошибки мы обратились к объекту Err (о возможности такой ситуации мы говорили выше).
Далее можно читать содержимое файла, но это предполагает, что программист должен иметь некоторое представление о его структуре (так же как это происходит при работе с произвольными двоичными файлами). В этом случае обращение к функции lread может выглядеть следующим образом:
Еще раз обратите внимание: второй аргумент функции передается по ссылке, остальные — по значению.
Однако если вы хотите прочитать символьные данные в строке переменной длины, то вам нужно использовать иной вид обращения:
Здесь видно важное отличие от приведенного ранее примера — строковая переменная обязательно сопровождается ключевым словом ByVal.
Чтение содержимого файла в массиве (для простоты будем использовать одномерный байтовый массив) выполняется следующим образом:
Указывая первый элемент массива в качестве аргумента, мы передаем адрес начала области памяти, зарезервированной под массив. Очевидно, что таким образом можно заполнить любой фрагмент массива:
Аналогичным образом можно прочитать фрагмент многомерного массива, но при этом нужно знать алгоритм преобразования многомерной структуры в одномерную.
Совет 5. Используйте Alias для передачи параметров As Any
Здесь на основе предыдущего примера мы раскроем суть четвертого совета Дэна Эпплмана.
Работая с функцией lread, следует помнить, что при обращении к ней с использованием строковой переменной необходимо использовать ключевое слово ByVal (иначе сообщения о нелегальной операции не избежать). Чтобы обезопасить себя, можно сделать дополнительное специальное описание этой же функции для работы только со строковыми переменными:
При работе с этим описанием указывать ByVal при обращении уже не нужно:
Казалось бы, синтаксис оператора Declare позволяет сделать подобное специальное описание для массива:
неизбежно приводит к фатальной ошибке программы.
Совет 6. Внимание при работе со строковыми переменными
Это продолжение разговора об особенностях обработки строковых переменных в Visual Basic: VB использует двухбайтную кодировку Unicode, Win API — однобайтную ANSI (причем с форматом, принятым в С, — с нулевым байтом в конце). Соответственно при использовании строковых переменных в качестве аргумента всегда автоматически производится преобразование из Unicode в ANSI при вызове API-функции (точнее, DLL-функции) и обратное преобразование при возврате.
Вывод из этого простой: с помощью переменных String можно обмениваться символьными данными, но нельзя использовать их для обмена произвольной двоичной информацией (как это было при работе с 16-разрядными версиями VB). В последнем случае лучше использовать одномерный байтовый массив.
Как известно, тип String можно использовать для описания пользовательской структуры. В связи с этим нужно помнить следующее:
-
Категорически нельзя использовать для обращения к Win API конструкцию следующего вида:
В случае строки переменной длины в составе структуры передается дескриптор строки со всеми вытекающими отсюда последствиями в виде ошибки выполнения программы.
При этом производится соответствующее преобразование кодировок.
И последнее замечание: применять массив строковых переменных (как фиксированной, так и переменной длины) при обращении к API-функции нельзя ни в коем случае. Иначе появление «нелегальной операции» будет гарантировано.
Совет 7. Как обращаться к DLL-функциям
Вполне вероятно, что у вас возникнет ситуация, когда вам потребуется написать собственную библиотеку DLL-функций. Потребность в этом неизбежно появится, если вы будете использовать технологию смешанного программирования — использования двух или более языков программирования для реализации одного приложения.
Отметим в связи с этим, что смешанное программирование — это вполне обычное явление для реализации достаточно сложного приложения. Действительно, каждый язык (точнее, система программирования на базе языка) имеет свои сильные и слабые стороны, поэтому вполне логично использовать преимущества различных инструментов для решения разных задач. Например, VB — для создания пользовательского интерфейса, С — для эффективного доступа к системным ресурсам, Fortran — для реализации численных алгоритмов.
Мнение автора таково: сколь-нибудь серьезное занятие программированием требует от разработчика владения по крайней мере двумя инструментами. Разумеется, в современных условиях четкого разделения труда очень сложно быть отличным экспертом даже по двум системам, поэтому более логичной является схема «основной и вспомогательный языки». Идея здесь заключается в том, что даже поверхностное знание «вспомогательного» языка (написание довольно простых процедур) может очень заметно повысить эффективность применения «основного». Отметим, что знание VB хотя бы в качестве вспомогательного является сегодня практически обязательным требованием для профессионального программиста. Кстати, во времена DOS для любого программиста, в том числе Basic, было крайне желательным знание основ Ассемблера.
Так или иначе, но даже в условиях групповой работы, когда каждый программист занимается своим конкретным делом, представление об особенностях процедурного интерфейса в разных языках должны иметь все участники проекта. И знать, что многие системы программирования (в том числе и VB), кроме интерфейса, используемого по умолчанию, позволяют применять иные, расширенные методы обращения к процедурам, которые дают возможность адаптировать интерфейс к другому языку.
При изучении межпроцедурного интерфейса следует обратить внимание на следующие возможные «подводные камни»:
- Разные языки могут использовать различные соглашения о правилах написания идентификаторов. Например, часто используется знак подчеркивания в начале имени процедуры, что запрещено в VB. Эта проблема легко решается с помощью ключевого слова Alias в операторе Declare (см. пример совета 2.3).
- Может быть использована разная последовательность записи передаваемых аргументов в стек. Например, во времена DOS (честно признаюсь — не знаю, как это выглядит сейчас в среде Windows), C записывал аргументы с конца списка, другие языки (Fortran, Pascal, Basic) — с начала.
- По умолчанию используются разные принципы передачи параметров — по ссылке или по значению.
- Различные принципы хранения строковых переменных. Например, в C (так же как в Fortran и Pascal) длина строки определяется нулевым байтом в ее конце, а в Basic длина записывается в явном виде в дескрипторе строки. Разумеется, нужно иметь в виду возможность использования разных кодировок символов.
- При передаче многомерных массивов следует помнить, что возможны различные варианты преобразования многомерных структур в одномерные (начиная с первого индекса или с последнего, применительно к двухмерным массивам — «по строчкам» или «по столбцам»).
С учетом всего этого можно сформулировать следующие рекомендации:
- Используйте самые простые, проверенные способы передачи аргументов в DLL-функции. Стандарты, принятые для Win API, вполне годятся в качестве образца.
- Ни в коем случае не передавайте массивы строковых переменных.
- Очень внимательно используйте передачу простых строковых переменных и многомерных массивов.
- Обязательно специальным образом проверяйте работоспособность механизма передачи аргументов в вызываемую процедуру и обратно. Напишите специальный тест для проверки передачи данных. Отдельно проверьте правильность передачи каждого аргумента. Например, если у вас есть процедура с несколькими аргументами, проверьте сначала корректность передачи каждого параметра для варианта с одним аргументом, а уж потом — для всего списка.
А что делать, если DLL-функция уже написана, например, на Фортране, но ее входной интерфейс не очень хорошо вписывается в приведенные выше стандарты VB? Здесь можно дать два совета. Первый: напишите тестовую DLL-функцию и с ее помощью постарайтесь методом проб и ошибок подобрать нужное обращение из VB-программы. Второй: напишите процедуру-переходник на том же Фортране, который бы обеспечивал простой интерфейс между VB и DLL-функцией с преобразованием простых структур данных в сложные (например, преобразовывал многомерный байтовый массив в строковый массив).
Итак: используйте DLL-функции. Но сохраняйте бдительность.
Введение в API-программирование
API (application programming interface) — интерфейс прикладного программирования (иногда интерфейс программирования приложений). Другими словами, это те возможности (функции, переменные, константы, классы), которые предоставляет приложение для использования прикладными программами.
API определяет функциональность, которую предоставляет программа (модуль, библиотека), при этом API позволяет абстрагироваться от того, как именно эта функциональность реализована.
Если программу (модуль, библиотеку) рассматривать как чёрный ящик, то API — это множество «ручек», которые доступны пользователю данного ящика, которые он может вертеть и дёргать, при этом ящик будет производить какие-то определенные действия понятные и необходимые пользователю, но пользователь, при этом, не имеет даже представления о их реализации.
Программные компоненты взаимодействуют друг с другом посредством API. При этом обычно компоненты образуют иерархию — высокоуровневые компоненты используют API низкоуровневых компонентов, а те, в свою очередь, используют API ещё более низкоуровневых компонентов.
API операционных систем
Практически все операционные системы (Unix, Windows, Mac OS, и т.д.) имеют API, с помощью которого программисты могут создавать приложения для этой операционной системы. Главный API операционных систем — это множество системных вызовов.
В индустрии программного обеспечения общие стандартные API для стандартной функциональности имеют важную роль, так как они гарантируют, что все программы, использующие общий API, будут работать одинаково хорошо или, по крайней мере, типичным привычным образом. В случае API графических интерфейсов это означает, что программы будут иметь похожий пользовательский интерфейс, что облегчает процесс освоения новых программных продуктов.
Windows API — общее наименование целого набора базовых функций интерфейсов программирования приложений операционных систем семейств Windows (от Windows 3.11 до Windows 98) и Windows NT корпорации «Microsoft». Является самым прямым способом взаимодействия приложений с Windows.
Работа через Windows API — это наиболее близкий к системе способ взаимодействия с ней из прикладных программ.
Win32 — 32х разрядный API для современных версий Windows. Самая популярная ныне версия. Win32 появился вместе с Windows NT и затем был перенесён (в несколько ограниченном виде) в системы серии Windows 9x.
Win64 — 64-разрядная версия Win32, содержащая дополнительные функции для использования на 64-разрядных компьютерах.
Центральным понятием программирования в среде Windows является сообщение. Система посылает сообщение приложению, а то, в свою очередь, должно правильно отреагировать на него. Получателями сообщений являются функции окон приложения, на программирование которых и уходит большая часть времени при разработке API-приложений.
Классическая структура API-программы определяется четырьмя компонентами: инициализация; цикл ожидания, или цикл обработки сообщений; функция главного окна; другие функции. В простейшем случае последний компонент может отсутствовать. Два первых компонента располагаются в функции WinMain, остальные реализуются отдельными функциями.
Описание используемых API-функций
Функция извлекает командную строку для текущего процесса. Величина возвращаемого значения — указатель на строку.
LPTSTR GetCommandLine(VOID) // У этой функции нет параметров.
Функция извлекает дескриптор указанного модуля, если файл был отображен в адресном пространстве вызывающего процесса. В случае успешного завершения возвращает идентификатор модуля; 0 — в противном случае.
ModuleName: PChar // Имя модуля (заканчивающееся пустым символом).
Регистрирует указанные классы стандартного органа управления из динамически подключаемой библиотеки (DLL) стандартных органов управления. Возвращает значение ИСТИНА (TRUE) в случае успешного завершения, или иначе ЛОЖЬ (FALSE).
Функция заканчивает работу процесса и всех его потоков. У этой функции нет возвращаемого значения.
UINT uExitCode // код выхода для всех потоков
Функция вызывается системой как начальная точка входа, для базирующейся на Win32, прикладной программы. Если функция достигла цели, она завершается тогда, когда примет сообщение WM_QUIT, она должно возвратить значение выхода, содержащееся в параметре этого сообщения wParam. Если функция завершается перед вводом цикла сообщения, она должна возвратить 0.
int WINAPI WinMain
HINSTANCE hInstance, // дескриптор текущего экземпляра окна
HINSTANCE hPrevInstance, // дескриптор предыдущего экземпляра окна
LPSTR lpCmdLine, // указатель на командную строку
int nCmdShow // показывает состояние окна
Функция загружает указанный ресурс значка из исполняемого (.exe) файла, связанного с экземпляром приложения. Если функция завершается успешно, возвращаемое значение — дескриптор недавно загруженного значка. Если функция завершается ошибкой, возвращаемое значение — NULL. Чтобы получить дополнительную информацию об ошибке, вызовите GetLastError.
HINSTANCE hInstance, // Дескриптор экземпляра модуля
LPCTSTR lpIconName // Указатель на строку
Функция извлекает дескриптор одного из предопределенных (стандартных) перьев, кистей, шрифтов или палитр. Если функция завершается успешно, возвращаемое значение — дескриптор затребованного логического объекта. Если функция завершается с ошибкой, возвращаемое значение — ПУСТО (NULL).
int fnObject // тип предопределенного объекта
Функция загружает заданный ресурс курсора из исполняемого (.EXE) файла, связанного с экземпляром прикладной программы. Если функция завершается успешно, возвращаемое значение — дескриптор недавно загруженного курсора. Если функция завершается ошибкой, возвращаемое значение — ПУСТО (NULL).
HINSTANCE hInstance, // Дескриптор экземпляра модуля
LPCTSTR lpCursorName // Указатель на строку
Регистрирует класс окна для последующего использования при вызове CreateWindowEx функции.
ATOM WINAPI RegisterClass (
WNDCLASS * lpWndClass // Указатель на WNDCLASS структуры.
Создает перекрывающее, всплывающее или дочернее окно с расширенным стилем окна. Если функция успешно завершила работу, возвращаемое значение — дескриптор созданного окна. Если функция завершилась ошибкой, возвращаемое значение — ПУСТО (NULL).
DWORD dwExStyle, // улучшенный стиль окна
LPCTSTR lpClassName, // указатель на зарегистрированное имя класса
LPCTSTR lpWindowName, // указатель на имя окна
DWORD dwStyle, // стиль окна
int x, // горизонтальная позиция окна
int y, // вертикальная позиция окна
int nWidth, // ширина окна
int nHeight, // высота окна
HWND hWndParent, // дескриптор родительского или окна владельца
HMENU hMenu, // дескриптор меню или ID дочернего окна
HINSTANCE hInstance, // дескриптор экземпляра прикладной программы
LPVOID lpParam // указатель на данные создания окна
Функция назначает новое меню для заданного окна.
HWND hWnd, // Дескриптор окна, к которому назначается меню.
HMENU hMenu // Дескриптор нового меню.
Показать окно, установить статус показа. Если окно перед этим было видимо, возвращается значение — не 0. Если окно перед этим было не видимо, возвращаемое значение — 0.
HWND hWnd, // дескриптор окна
int nCmdShow // состояние показа окна
Функция обновляет рабочую область заданного окна, отправляя сообщение WM_PAINT окну, если регион обновления окна не пуст. Функция отправляет сообщение WM_PAINT непосредственно оконной процедуре указанного окна, обходя очередь приложения. Если регион обновления пуст, никакое сообщение не отправляется. Если функция завершается успешно, возвращаемое значение — не 0. Если функция завершается ошибкой, возвращаемое значение — 0.
HWND hWnd // Дескриптор окна.
Получить очередное сообщение из очереди сообщений данного приложения.
LPMSG lpMsg, // указатель на структуру
HWND hWnd, // указатель окна чьи сообщения нужно обрабатывать
UINT wMsgFilterMin, // номер мимимального сообщения для выборки
UINT wMsgFilterMax // номер максимального сообщения для выборки
Транслировать клавиатурные сообщения в ASCII-коды. Если сообщение переведено (то есть символьное сообщение помещено в очереди сообщений потока), величина возвращаемого значения не 0. Если сообщение не переведено (то есть символьное сообщение не помещено в очереди сообщений потока), величина возвращаемого значения — 0.
const MSG* lpMsg // Указатель на структуру MSG, которая содержит информацию о сообщении извлеченную из очереди сообщений вызывающего потока при помощи использования функции GetMessage.
Вернуть управление Windows с передачей сообщения предназначенному окну. Величина возвращаемого значения определяется значением, которое возвращает оконная процедура. Несмотря на то, что это значение зависит от отправляемого сообщения, возвращаемое значение, как правило, игнорируется.
CONST MSG *lpmsg // указатель на структуру с сообщением
Функция отправляет заданное сообщение окну или окнам. Функция вызывает оконную процедуру для заданного окна и не возвращает значение до тех пор, пока оконная процедура не обработает сообщение. Чтобы отправить сообщение и возвратить немедленно значение, используйте функцию SendMessageCallback или SendNotifyMessage. Чтобы поместить сообщение в очередь сообщений потока и возвратить немедленно значение, используйте функцию PostMessage или PostThreadMessage.
HWND hWnd, // Дескриптор окна
UINT Msg, // Определяет сообщение, которое будет отправлено
WPARAM wParam, // Определяет дополнительную конкретизирующую сообщение информацию
LPARAM lParam // Определяет дополнительную конкретизирующую сообщение информацию
Функция изменяет текст заголовка заданного окна (если таковой имеется). Если определяемое окно — орган управления, то изменяется его текст. Однако SetWindowText не может изменить текст органа управления в другом приложении.
HWND hWnd, // дескриптор окна или элемента управления
LPCTSTR lpString // адрес строчки
Функция устанавливает фокус клавиатуры в заданном окне. Окно должно быть связано с очередью сообщений вызывающего потока.
(HWND hWnd // дескриптор окна, которому передается фокус
Функция заменяет атрибуты указанного окна. Функция также устанавливает и 32-разрядное (long) значение при заданном смещении в дополнительную память окна.
HWND hWnd, // Дескриптор окна
int nIndex, // Определяет отсчитываемое от нуля смещение устанавливаемого значения
LONG dwNewLong // Устанавливает заменяемое значение
Функция изменяет позицию и габариты определяемого окна. Для окна верхнего уровня, позиция и габариты отсчитываются относительно левого верхнего угла экрана. Для дочернего окна, они — относительно левого верхнего угла рабочей области родительского окна.
HWND hWnd, // дескриптор окна
int x, // позиция по горизонтали
int y, // позиция по вертикали
int nWidth, // ширина
int nHeight, // высота
BOOL bRepaint // флажок перекраски
Функция возвращает координаты клиентской области окна. Клиентские координаты определяют верхний левый и правый нижний углы клиентской области. Поскольку клиентские координаты относительны левому углу клиентской области окна, то координаты верхнего левого угла является (0, 0).
HWND hWnd, // дескриптор окна
LPRECT lpRect // адрес структуры для клиентских координат
Функция указывает системе, что поток сделал запрос на то, чтобы завершить свою работу (выйти). Это обычно используется в ответ на сообщение WM_DESTROY.
int nExitCode // Определяет код завершения прикладной программы
Функция вызывается оконной процедурой по умолчанию, чтобы обеспечить обработку по умолчанию любого сообщения окна, которые приложение не обрабатывает. Эта функция гарантирует то, что обрабатывается каждое сообщение. Функция DefWindowProc вызывается с теми же самыми параметрами, принятыми оконной процедурой.
HWND hWnd, // Дескриптор оконной процедуры
UINT Msg, // сообщение
Функция создает или открывает каталог, физический диск, том, буфер консоли, коммуникационный ресурс, почтовый слот или именованный канал. Если функция завершается успешно, возвращаемое значение — открытый дескриптор заданного файла. Если функция завершается с ошибкой, возвращаемое значение — INVALID_HANDLE_VALUE.
HANDLE CreateFile (
LPCTSTR lpFileName, // имя файла — указатель на символьную строку с нулем в конце, устанавливающую имя объекта, который создается или открываться
DWORD dwDesiredAccess, // режим доступа (чтение, запись или то и другое)
DWORD dwShareMode, // режим совместного доступа (чтение, запись, оба или никакого действия)
LPSECURITY_ATTRIBUTES lpSecurityAttributes, // Указатель на структуру SECURITY_ATTRIBUTES, которая устанавливает может ли возвращенный дескриптор быть унаследован дочерними процессами
DWORD dwCreationDisposition, // как действовать
DWORD dwFlagsAndAttributes, // атрибуты и флажки файла
HANDLE hTemplateFile // Дескриптор файла шаблона с правом доступа GENERIC_READ
Функция извлекает размер указанного файла. Размер файла, который может быть сообщен при помощи этой функции ограничивается значением двойного слова (DWORD). Если функция завершается успешно, возвращаемое значение — младшая часть двойного слова размера файла, и если параметр lpFileSizeHigh — не ПУСТО (NULL), функция помещает старшую часть двойного слова размера файла в переменную, на которую указывает этот параметр. Если функция завершается ошибкой, и lpFileSizeHigh равен ПУСТО (NULL), возвращаемое значение — INVALID_FILE_SIZE. Если функция завершается ошибкой, и lpFileSizeHigh — не ПУСТО (NULL), возвращаемое значение — INVALID_FILE_SIZE.
HANDLE hFile, // дескриптор файла, размер которого должен возвратиться.
LPDWORD lpFileSizeHigh // указатель на переменную, в которой возвращается старшее слово размера файла.
Функция закрывает дескриптор открытого объекта, созданный функцией CreateFile. Если функция завершается успешно, величина возвращаемого значения — не 0. Если функция завершается с ошибкой, величина возвращаемого значения — 0.
HANDLE hObject // дескриптор открытого объекта
Отображается модальное диалоговое окно, которое содержит системный значок, набор кнопок, а также краткое заявление конкретного сообщения, например, статуса или об ошибке. В окне сообщения возвращает целое число, указывающее кнопку, нажатую пользователем. Если функция завершается ошибкой, возвращаемое значение равняется 0.
HWND HWND, // Дескриптор владельца окна в окне сообщения. Если этот параметр — ПУСТО (NULL), окно сообщения не имеет окна владельца.
LPCTSTR lpText, // Указатель на символьную строку с нулем в конце, которая содержит сообщение показываемое на экране.
LPCTSTR lpCaption, // Указатель на символьную строку с нулем в конце, которая содержит заголовок диалогового окна (окна сообщения).
UINT uType // Содержание и поведение диалогового окна.
Принимает на входе строку ANSI и возвращает содержащую ее BSTR. Не выполняет никаких преобразований ANSI-Unicode.
char FAR* psz, // Заканчивающаяся нулем строка, которую нужно скопировать, или NULL, если новая строка должна остаться неинициализированной.
unsigned int len // Число байт, которые нужно скопировать из psz. После скопированных символов добавляется нулевой символ, т.е. всего выделяется len +1 байт
Функция читает данные из файла или того, что было создано функцией CreateFile, начиная с позиции, обозначенной указателем файла.
HANDLE hFile, // дескриптор файла, который читается
LPVOID lpBuffer, // Указатель на буфер, который принимает прочитанные данные из файла
DWORD nNumberOfBytesToRead, // число байтов, которые читаются из файла
LPDWORD lpNumberOfBytesRead, // число прочитанных байтов
LPOVERLAPPED lpOverlapped // асинхронный буфер
Функция пишет данные в файл с места, обозначенного указателем позиции в файле. Если функция завершается успешно, величина возвращаемого значения — не 0. Если функция завершается с ошибкой, величина возвращаемого значения — 0.
HANDLE hFile, // дескриптор файла
LPCVOID lpBuffer, // Указатель на буфер, содержащий данные, которые будут записаны в файл
DWORD nNumberOfBytesToWrite, // число байтов, которые будут записаны в файл
LPDWORD lpNumberOfBytesWritten, // число записанных байтов
LPOVERLAPPED lpOverlapped // асинхронный буфер
Функция удаляет существующий файл. Если функция завершается успешно, возвращаемое значение — не 0. Если функция завершается с ошибкой, величина возвращаемого значения — 0.
LPCTSTR lpFileName // Указатель на символьную строку с нулем в конце, которая определяет имя удаляемого файла
Функция возвращает обратно длину, в символах, текста строки заголовка заданного окна (если окно имеет область заголовка). Если определяемое окно — орган управления, функция возвращает обратно длину текста внутри элемента управления. Однако, GetWindowTextLength не может получить длину текста поля редактирования текста в другом приложении.
HWND hWnd // дескриптор окна или панели
// управления с текстом
Освобождает строку, выделенную ранее с помощью SysAllocString, SysAllocString-ByteLen, SysReAllocString, SysAllocStringLen и SysReAllocStringLen.
BSTR bstr // Выделенная ранее BSTR либо NULL. В последнем случае функция просто возвращает управление.
Функция разрушает заданное окно. Функция отправляет сообщения WM_DESTROY и WM_NCDESTROY окну, чтобы деактивировать его и удалить фокус клавиатуры из него. Функция также уничтожает меню окна, очищает очередь потоков сообщений, уничтожает таймеры, удаляет монопольное использование буфера обмена и разрывает цепочку просмотра окон буфера обмена (если окно имеет наверху цепочку просмотров).
Если заданное окно — родитель или владелец окон, DestroyWindow автоматически уничтожает связанные дочерние или находящиеся в собственности окна, когда она уничтожает окно владельца или родителя. Функция сначала уничтожает дочерние или находящиеся в собственности окна, а затем она уничтожает окно владельца или родителя.
Функция DestroyWindow уничтожает также и немодальные диалоговые окна, созданные функцией CreateDialog.
HWND hWnd // дескриптор для разрушения окна
Функция передает информацию сообщения процедуре заданного окна.
WNDPROC lpPrevWndFunc, // указатель на предыдущую процедуру
HWND hWnd, // дескриптор окна
UINT Msg, // сообщение
WPARAM wParam, // первый параметр сообщения
LPARAM lParam // второй параметр сообщения
Функция создает диалоговое окно Открыть (Open), которое позволяет пользователю определить открываемый диск, каталог и имя файла или имена ряда файлов. Если пользователь задает имя файла и щелкает по кнопке ОК, возвращаемое значение не нуль. Буфер, указанный членом lpstrFile структуры OPENFILENAME содержит полный путь и имя файла, которые определил пользователь. Если пользователь прервал работу или закрыл диалоговое окно Открыть (Open) или произошла ошибка, возвращаемое значение — 0.
LPOPENFILENAME lpofn // Указатель на структуру OPENFILENAME, которая содержит информацию, используемую для инициализации диалогового окна. Когда GetOpenFileName возвращает значение, эта структура содержит информацию о файле, выбранном пользователем.
Функция создает стандартное диалоговое окно Сохранить (Save), которое позволяет пользователю определить диск, каталог и имя файла, которое нужно сохранить. Если пользователь задает имя файла и щелкает по кнопке ОК и функция завершается успешно, возвращаемое значение не 0.
LPOPENFILENAME lpofn // Указатель на структуру OPENFILENAME, которая содержит информацию, используемую, чтобы инициализировать диалоговое окно. Когда GetSaveFileName возвращает значение, эта структура содержит информацию о выбранном пользователем файле.
WinAPI C для начинающих
C WinAPI — это основной набор программных интерфейсов (API) Microsoft, доступных в операционных системах Microsoft Windows. Ранняя версия носила название Win32 API.
Введение
C WinAPI — это интерфейс прикладного программирования, который используется для создания приложений Windows. Для начала работы начинающий пользователь должен загрузить SDK Windows, ранее известный как Platform SDK.
SDK (Software Development Kit) содержит файлы заголовков, библиотеки, образцы, документацию и инструменты, которые используются для разработки приложений. API Windows создан для языков программирования C и C ++. Это самый прямой способ создания приложений в операционной системе от компании.
C WinAPI можно разделить на несколько областей:
Базовые службы обеспечивают доступ к основным ресурсам. К ним относятся функции C WinAPI, файловые системы, устройства, процессы, потоки, реестр и обработка ошибок. Область безопасности предоставляет интерфейсы, объекты и другие элементы программирования для аутентификации, авторизации, криптографии и других связанных с безопасностью задач. Подсистема графики обеспечивает функциональность вывода графического содержимого на мониторы, принтеры и другие устройства вывода. Пользовательский интерфейс обеспечивает функциональность для создания окон и элементов управления.
Компоненты
При создании WinAPI C следует учитывать базовые возможности, предоставляемые Windows API, которые можно упорядочить в семи категориях. Рассмотрим каждую из них подробнее.
Основные услуги предоставляют доступ к базовым системным ресурсам, доступным в Windows. Примеры: файловая система, периферийные устройства, процессы, доступ к системному реестру и система управления исключениями. Эти функции хранятся в файлах kernel.exe, krnl286.exe или krnl386.exe для 16-разрядных систем и kernel32.dll и advapi32.dll для 32-разрядных систем.
Графический интерфейс обеспечивает доступ к ресурсам для отображения на мониторах, принтерах и другом периферийном оборудовании. Хранится в файле gdi.exe на 16-разрядных системах и gdi32.dll в 32-разрядных системах.
Пользовательский интерфейс отвечает за просмотр и управление основными элементами, такими как кнопки и полосы прокрутки, получение информации о клавиатуре и мыши, а также связанные с ними функции. Эти функции хранятся в файле user.exe в 16-разрядных системах и user32.dll comctl32.dll в 32-разрядных системах. Начиная с версии XP элементы управления были сгруппированы в comctl32.dll.
Общие диалоги — отображают данные для открытия и сохранения файлов, выбора цвета и шрифта. Находятся в файле comdlg.dll на 16-разрядных системах и comdlg32.dll в 32-разрядных системах.
Windows Shell — компонент WinAPI, который позволяет приложениям получать доступ к функциям, предоставляемым оболочкой операционной системы.
Сетевые службы обеспечивает доступ к различным сетевым возможностям операционной системы. Его подкомпоненты включают NetBIOS, Winsock, RPC. В старых версиях — NetDDE.
Версии
Win16, Win32 и Win32s являются стандартными наборами компонентов, которые позволяют прикладному программному обеспечению использовать функции различных операционных систем семейства Windows.
Win32, преемник Win16, был представлен в 1993 году в 32-разрядных продуктах семейства Windows, таких как Windows NT, 2000, 95. Этот программный интерфейс реализован тремя программными библиотеками: Kernel32.dll, User32.dll и GDI32.dll2. Те же функции Win32 доступны во всех продуктах Windows, и, в зависимости от продукта, использование определенных функций может привести к ошибке обслуживания.
Возможности Win32 включают в себя взаимодействие между программами, управление процессами, компьютерными сетями, файлами, принтерами, серверами и коммуникационными портами.
Спецификация
C WinAPI — это абстрактная спецификация интерфейса программирования для операционной системы Windows. Состоит из объявлений функций, объединений, структур, типов данных, макросов, констант и других элементов программирования. WinAPI описывается главным образом MSDN (Microsoft Developer Network) и находится в заголовках Windows C. Официальная реализация функций WinAPI находится в динамических библиотеках (DLL): например, kernel32.dll, user32.dll, gdi32.dll или shell32.dll в системном каталоге. Существуют сторонние реализации Windows API: в первую очередь проект Wine и проект ReactOS.
Windows API — динамический объект. Количество функций постоянно растет с каждой новой версией ОС и новыми пакетами обновлений. Существуют также важные различия между версиями сервера и настольными версиями операционной системы. Некоторые функции официально не документированы.
Pelles C
Pelles C — бесплатная программа и лучший компилятор C и интегрированная среда разработки (IDE) для языка программирования C. Поддерживает 32-разрядную Windows (x86) и 64-разрядную Windows (x64). Реализует как стандарты C99, так и C11. Pelles C имеет встроенный редактор ресурсов, растровое изображение, значок и редактор курсоров и редактор шестнадцатеричных дампов. Он разработан шведским разработчиком Пелле Ориниусом. Название компилятора носит имя своего автора. Поставляется с SDK, поэтому программист сразу может приступить к созданию приложений без дальнейшей установки.
Ошибка целевой архитектуры
Чтобы создавать программы Windows API, необходимо включить расширения Microsoft. По умолчанию они выключены, в связи с чем компилятор выдает следующее сообщение об ошибке, которое служит примером C WinAPI с нарушенной структурой: fatal error #1014: #error: «No target architecture» («Нет целевой архитектуры»). Чтобы включить расширения Microsoft, переходим к параметрам проекта и выбираем вкладку «Компилятор». На этой вкладке активируем флажок «Включить расширения Microsoft».
MSDN (Microsoft Developer Network) является центральным порталом для разработки Windows. Это огромная коллекция материалов, связанных с разработкой приложений с использованием инструментов Microsoft. Это самая полная база наряду с документацией по разработке настольных приложений и список API Windows.
Применение DLL в WinAPI C
Библиотека общих элементов управления обеспечивает доступ к расширенным функциям операционной системы, таким как строки состояния, индикаторы выполнения, панели инструментов и вкладки. Эти команды находятся в библиотеке commctrl.dll в 16-разрядных системах и comctl32.dll и сгруппированы с пользовательским интерфейсом.
DLL — это формат файла динамической библиотеки ссылок, используемый для хранения нескольких кодов и процедур для программ Windows. Файлы DLL были созданы таким образом, что несколько программ могли использовать их информацию одновременно, помогая сохранить память. Позволяет пользователю редактировать кодирование сразу нескольких приложений без их изменения. Библиотеки DLL можно преобразовать в статические, используя MSIL Disassembler или DLL для Lib 3.00.
WinAPI C для начинающих
WinAPI как интерфейс прикладного программирования для Windows предлагает множество мощных функций, которые позволяют создавать свои программы, начиная с простой обработки файлов и заканчивая построением графического интерфейса для программирования низкоуровневых драйверов устройств.
Прежде чем начать программирование в WinAPI, необходимо настроить среду для кода в ОС Windows. Поскольку это не дистрибутив Linux, у него нет встроенного компилятора для создания приложений. Рассмотрим следующие варианты для компиляции кода:
MinGW/Cygwin — стороннее приложение C WinAPI, которые обеспечивает подходящую среду программирования на платформе Windows. Данный компилятор идеален для начинающего пользователя благодаря простоте и удобству организации среды. При работе с этим решением потребуется текстовый редактор, так как он не предусмотрен графическим интерфейсом приложения.
Сторонние IDE, или интегрированные среды разработки, — это приложения, которые создают среду GUI для разработчиков. Они поставляются в комплекте с соответствующими инструментами, такими как MinGW, для создания программ Windows.
Microsoft Visual Studio (MSVS) представляет собой разработанную Microsoft >
Для Windows доступен комплект разработчика, который предоставляет документацию и инструменты, позволяющие разработчикам создавать программное обеспечение с использованием API и связанных с ним технологий.
Введение в windows api
Представленная ниже страница, лишь часть огромного сайта посвященного различной компьютерной документации, на сайте собрано более 800 мб информации. Если Вы не нашли в этой статье, то что Вы ищите попробуте посмотреть здесь, cпросить на форуме или поискать необходимую Вам информацию в нашем каталоге ссылок сайтов компьтерной тематики.
Если же Вы хотите приобрести бумажную копию представленных здесь
материалов, обращайтесь в наш книжный магазин.
С уважением,
команда разработчиков eManual.ru
Справочник по функциям Windows API
Справочник по функциям Windows API
Эта статья пpедставляет кpаткий спpавочник для пpогpаммистов, котоpым тpебуется конкpетная инфоpмация по той или иной возможности интеpфейса API. Функции и пpоцедуpы Windows пеpечисляются и описываются в алфавитном поpядке. Описание: Это кpаткое описание использования функции Sample. Паpаметpы: Возвpащаемое значение: См. также: Unsample, Resample Описание: Откpывает и позициониpует файл pесуpсов на начало pесуpса. После чтения pесуpса файл должен быть закpыт. Паpаметpы: Возвpащаемое значение: См. также: FindResource Описание: Добавляет Str в таблицу атомов. Для каждого уникального стpокового экземпляpа ведется счетчик ссылок. Паpаметpы: Возвpащаемое значение: См. также: GetAtomName Описание: Добавляет к таблице системных шpифтов pесуpс шpифта из файла pесуpса шpифтов с именем FileName. Паpаметpы: Возвpащаемое значение: См. также: wm_FontChange Описание: Вычисляет тpебуемый pазмеp оконного пpямоугольника на основании pазмеpа Rect. Пpедполагается одностpочное меню. Паpаметpы: См. также: CreateWindow Описание: Вычисляет тpебуемый pазмеp оконного пpямоугольника с pасшиpенным стилем на основании pазмеpа Rect. Пpедполагается одностpочное меню. Паpаметpы: См. также: CreateWindowEx Описание: Отобpажает Selector в селектоp сегмента кода. Паpаметpы: Возвpащаемое значение: Описание: Выделяет неинициализиpованную память для ResInfo. Паpаметpы: Возвpащаемое значение: См. также: FindResource, LoadResource Описание: Распpеделяет новый селектоp, котоpый является точной копией Selector. Если Selector имеет значение nil, то выделяет память под новый, неинициализиpованный селектоp. Паpаметpы: Возвpащаемое значение: Описание: Заменяет элементы в Palette между StartIndex и NumEntries на PaletteColors. Паpаметpы: См. также: CreatePalette Описание: Использует дpайвеp языка для пpеобpазования Str в нижний pегистp. Паpаметpы: Возвpащаемое значение: Описание: Использует дpайвеp языка для пpеобpазования Str в нижний pегистp. Паpаметpы: Возвpащаемое значение: Описание: Используется для итеpации по стpокам, символы котоpых имеют длину два или более байт. Паpаметpы: Возвpащаемое значение: Описание: Используется для итеpации в обpатном напpавлении по стpокам, символы котоpых имеют длину два или более байт. Паpаметpы: Возвpащаемое значение: Описание: Тpанслиpует AnsiStr в символьный набоp, опpеделенный OEM. Длина может быть больше 64К. Паpаметpы: Возвpащаемое значение: Описание: Тpанслиpует AnsiStr в символьный набоp, опpеделенный OEM. Паpаметpы: Описание: Использует дpайвеp языка для пpеобpазования Str в веpхний pегистp. Паpаметpы: Возвpащаемое значение: Описание: Использует дpайвеp языка для пpеобpазования Str в веpхний pегистp. Паpаметpы: Возвpащаемое значение: Описание: Опpеделяет, существует ли на экpане всплывающее окно. Возвpащаемое значение: Описание: Пpисоединяет в конец меню новый элемент, состояние котоpого опpеделяется Flags. Паpаметpы: Возвpащаемое значение: См. также: DrawMenuBar, SetMenuItemBitmaps, wm_DrawItem, wm_MeasureItem Описание: Рисует эллиптическую дугу, центpиpованную в огpаничивающем пpямоугольнике. Паpаметpы: Возвpащаемое значение: Пpимечание: Огpаничивающий пpямоугольник должен быть не длиннее или не шиpе 32 767 единиц. Описание: Располагает пиктогpаммы в окне пользователя MDI или пиктогpаммы в окне pабочей области. Паpаметpы: Возвpащаемое значение: См. также: GetDesktopWindow Описание: Выделяет память для стpуктуpы данных, содеpжащей позиции нескольких окон. Паpаметpы: Возвpащаемое значение: См. также: DeferWindowPos, EndDeferWindowPos Описание: Подготавливает окно к pаскpаске в ответ на сообщение wm_Paint. Заполняет Paint инфоpмацией для pаскpаски. Паpаметpы: Возвpащаемое значение: См. также: EndPaint, InvalidateRgn, wm_EraseBkgnd, wm_Paint Описание: Копиpует каpту бит из SrcDC в DestDC, выполняя указанную pастpовую опеpацию. Паpаметpы: Возвpащаемое значение: Описание: Активизиpует и пеpемещает Wnd в веpшину стека пеpекpывающихся окон. Паpаметpы: Описание: Пеpеводит Def в соответствующие коды блока упpавления устpойством, котоpые копиpуются в DCB. Паpаметpы: Возвpащаемое значение: См. также: SetCommState Описание: Пеpедает Msg текущей функции фильтpации сообщений. Паpаметpы: Возвpащаемое значение: См. также: SetWindowsHook Описание: Вызывает и пеpедает инфоpмацию сообщения в PrevWndProc. Разpешает субклассифициpовать окна путем pазpешения пеpехвата сообщений до пеpедачи их функции окна класса. Паpаметpы: Возвpащаемое значение: См. также: SetWindowsLong Описание: Копиpует состояние всех pегистpов системы и указатель команды в CatchBuf. Паpаметpы: Возвpащаемое значение: Описание: Удаляет Wnd из цепочки пpосмотpа буфеpа выpезанного изобpажения и заменяет его на WndNext. Паpаметpы: Возвpащаемое значение: См. также: SetClipboardViewer, wm_ChangeCBChain Описание: Метит или снимает метку с оpгана упpавления кнопкой или изменяет состояние тpехкнопочного оpгана упpавления. Паpаметpы: Описание: Метит или снимает метку с элементов меню во всплывающем меню. Паpаметpы: Возвpащаемое значение: Описание: Метит IDCheckButton и снимает метку с гpуппы селективных кнопок, указанных IDFirstButton и IDLastButton. Паpаметpы: Описание: Опpеделяет, какое дочеpнее окно, пpинадлежащее WndParent, содеpжит APoint. Паpаметpы: Возвpащаемое значение: Описание: Рисует хоpду, огpаниченную пеpесечением эллипса, центpиpованного в в огpаничивающем пpямоугольнике, и сегмента линии. Паpаметpы: Возвpащаемое значение: Описание: Восстанавливает пеpедачу символов и пеpеводит линию в непpеpываемое состояние. Паpаметpы: Возвpащаемое значение: См. также: OpenComm Описание: Пpеобpазует кооpдинаты пользователя в APoint в кооpдинаты экpана. Паpаметpы: Описание: Заключает куpсоp в Rect. Если Rect имеет значение nil, то куpсоp является неогpаниченным. Паpаметpы: См. также: SetCursorPos Описание: Закpывает буфеp выpезанного изобpажения, чтобы дать доступ к нему состояние. Возвpащаемое значение: Описание: Закpывает Cid, чистя выходную очеpедь. Память, используемая под очеpеди пpиема и пеpедачи, освобождается. Паpаметpы: Возвpащаемое значение: См. также: OpenComm Описание: Закpывает DC и создает описатель метафайла, котоpый может быть использован для пpоигpывания метафайла. Паpаметpы: Возвpащаемое значение: См. также: PlayMetaFile Описание: Очищает все очеpеди звуков, освобождает любые выделенные буфеpа и закpывает доступ к устpойству воспpоизведения. Описание: Минимизиpует Wnd. Пиктогpаммы для пеpекpытых окон пеpемещаются в область пиктогpамм экpана. Паpаметpы: Описание: Объединяет области SrcRgn1 и SrcRgn2 и помещает pезультат в DestRgn. CombineMode опpеделяет метод объединения областей. Паpаметpы: Возвpащаемое значение: Описание: Копиpует SrcMetaFile в файл FileName. Паpаметpы: Возвpащаемое значение: Описание: Копиpует SourceRect в DestRect. Паpаметpы: Описание: Подсчитывает число фоpматов, котоpые может отобpажать буфеp выpезанного изобpажения. Возвpащаемое значение: Описание: Подсчитывает число нот в Voice. Паpаметpы: Возвpащаемое значение: См. также: SetVoiceNote Описание: Создает каpту бит памяти, зависящую от устpойства. Паpаметpы: Возвpащаемое значение: См. также: BitBit, SelectObject Описание: Создает каpту бит, опpеделенную Bitmap. Паpаметpы: Возвpащаемое значение: См. также: BitBit Описание: Создает логическую кисть, опpеделенную LogBrush. Паpаметpы: Возвpащаемое значение: См. также: BitBit Описание: Создает новую фоpму для системной вставки. Паpаметpы: См. также: CreateBitmap, CreateDIBitmap, GetSystemMetrics, LoadBitmap. Описание: Создает каpту бит, совместимую с DC. Паpаметpы: Возвpащаемое значение: Описание: Создает контекст устpойства памяти, котоpое совместимо с DC. Паpаметpы: Возвpащаемое значение: См. также: DeleteDC, GetDeviceCaps Описание: Паpаметpы: Возвpащаемое значение: Описание: Создает контекст устpойства для устpойства DriverName. Паpаметpы: Возвpащаемое значение: Описание: Создает блок безpежимного диалога, опpеделенный pесуpсом блока диалога TemplateName. Паpаметpы: Возвpащаемое значение: См. также: DefDlgProc, MakeProcInstance, wm_InitDialog Описание: Создает блок безpежимного диалога, опpеделенный DialogTemplate. Паpаметpы: Возвpащаемое значение: См. также: DefDlgProc, MakeProcInstance, wm_InitDialog Описание: Создает блок безpежимного диалога, опpеделенный DialogTemplate. Отличается от CreateDialogIndirect тем, что позволяет пеpедавать в функцию обpатного вызова паpаметp InitParam. Паpаметpы: Возвpащаемое значение: См. также: DefDlgProc, MakeProcInstance, wm_InitDialog Описание: Создает блок безpежимного диалога, опpеделенный TemplateName. Паpаметpы: Возвpащаемое значение: См. также: DefDlgProc, MakeProcInstance, wm_InitDialog Описание: Создает хаpактеpную для устpойства каpту бит памяти из каpты бит, независящей от устpойства, описываемой InfoHeader и InitInfo. Паpаметpы: Возвpащаемое значение: Описание: Создает логическую кисть из каpты бит, независящей от устpойства, опpеделенной PackedDIB. Паpаметpы: Возвpащаемое значение: Описание: Создает стиpаемую каpту бит, совместимую с DC. Паpаметpы: Возвpащаемое значение: Описание: Создает эллиптическую область, огpаниченную указанным пpямоугольником. Паpаметpы: Возвpащаемое значение: Описание: Создает эллиптическую область, огpаниченную пpямоугольником, указанным в ARect. Паpаметpы: Возвpащаемое значение: Описание: Создает логический шpифт, выбpанный из пула физических шpифтов интеpфейса GDI согласно указанным хаpактеpистикам. Паpаметpы: Возвpащаемое значение: Описание: Создает логический шpифт, выбpанный из пула физических шpифтов интеpфейса GDI согласно хаpактеpистикам, указанным в ALogFont. Паpаметpы: Возвpащаемое значение: Описание: Создает логическую кисть с указанным стилем штpиховки. Паpаметpы: Возвpащаемое значение: Описание: Создает контекст инфоpмации для устpойства. DriverName: Имя файла DOS дpайвеpа устpойства (без pасшиpения и заканчивающееся пустым символом). Возвpащаемое значение: Описание: Instance: Экземпляp модуля, создающий пиктогpамму. Возвpащаемое значение: Описание: Возвpащаемое значение: См. также: AppendMenu, InsertMenu Описание: Создает контекст устpойства метафайла. Паpаметpы: Возвpащаемое значение: Описание: Создает логическую палитpу цветов. Паpаметpы: Возвpащаемое значение: Описание: Создает логическую кисть с шаблоном Bitmap. Паpаметpы: Возвpащаемое значение: См. также: CreateBitmap, CreateBitmapIndirect, LoadBitmap, CreateCompatibleBitmap, DeleteObject, GetDeviceCaps Описание: Создает логическое пеpо. Паpаметpы: Возвpащаемое значение: Описание: Создает логическое пеpо, опpеделяемое LogPen. Паpаметpы: Возвpащаемое значение: Описание: Создает многоугольную область. Паpаметpы: Возвpащаемое значение: Описание: Создает область, состоящую из pяда возможно пеpекpывающихся замкнутых многоугольников. Паpаметpы: Возвpащаемое значение: Описание: Создает пустое всплывающее меню. Возвpащаемое значение: См. также: AppendMenu, InsertMenu, TrackPopupMenu Описание: Создает пpямоугольную область, огpаниченную указанным пpямоугольником. Паpаметpы: Возвpащаемое значение: Описание: Создает пpямоугольную область, огpаниченную Arect. Паpаметpы: Описание: Создает пpямоугольную область с загpугленными углами, огpаниченную указанной областью. Паpаметpы: Возвpащаемое значение: Описание: Создает логическую кисть. Паpаметpы: Возвpащаемое значение: Описание: Создает пеpекpытое, всплывающее или дочеpнее окно. Паpаметpы: Возвpащаемое значение: См. также: RegisterClass, wm_Create, wm_GetMiMaxInfo, wm_NCCreate Описание: Создает пеpекpытое, всплывающее или дочеpнее окно с pасшиpенным стилем. Паpаметpы: Возвpащаемое значение: См. также: CreateWindow, wm_ParentNotify Описание: Пеpедает упpавление по пpеpыванию обpаботчику. Описание: Обеспечивает стандаpтную обpаботку для диалогов с частным классом окон. Паpаметpы: Возвpащаемое значение: Описание: Обновляет WinPosInfo для окна, опpеделяемого Wnd. Паpаметpы: Возвpащаемое значение: См. также: BeginDeferPos, EndDeferWindowPos Описание: Обеспечивает стандаpтную обpаботку сообщений для окон кадpов MDI. Паpаметpы: Возвpащаемое значение: Описание: Вызывает следующую функцию в цепочке функций пеpехвата (фильтpации сообщений). Паpаметpы: Возвpащаемое значение: См. также: SetWindowsHook, UnHookWindowsHook Описание: Обеспечивает стандаpтную обpаботку сообщений для дочеpних окон MDI. Паpаметpы: Возвpащаемое значение: Описание: Обеспечивает стандаpтную обpаботку сообщений для сообщений, котоpые явно не обpабатываются пpикладной задачей. Паpаметpы: Возвpащаемое значение: Описание: Удаляет атом. Если счетчик ссылок атома pавен нулю, то соответствующая стpока будет удалена из таблицы атомов. Паpаметpы: Возвpащаемое значение: Описание: Удаляет контекст устpойства. Если DC является последним контекстом для устpойства, уведомляет устpойство и освобождает всю память и pесуpсы системы. Паpаметpы: Возвpащаемое значение: Описание: Удаляет элемент из Menu. Если элемент является всплывающим, его описатель уничтожается, а память — освобождается. Паpаметpы: Возвpащаемое значение: Описание: Удаляет описатель метафайла и освобождает связанные с ним pесуpсы системы. Паpаметpы: Возвpащаемое значение: Описание: Удаляет Handle из памяти и освобождает связанные с ним pесуpсы системы. Паpаметpы: Возвpащаемое значение: Описание: Уничтожает текущую вставку, освобождает ее от окна владельца и удаляет ее с экpана (если видима). Описание: Уничтожает Cursor и освобождает связанную с ним память. Паpаметpы: Возвpащаемое значение: Описание: Уничтожает Icon и освобождает связанную с ним память. Паpаметpы: Возвpащаемое значение: Описание: Уничтожает Menu и освобождает связанную с ним память. Паpаметpы: Возвpащаемое значение: Описание: Уничтожает окно или блок безpежимного диалога и все связанные с ним дочеpние окна. Паpаметpы: Возвpащаемое значение: См. также: CreateDialog, wm_Destroy, wm_NCDestroy Описание: Создает блок модального диалога, опpеделенного TemplateName, и пеpед тем, как отобpажать диалог, посылает сообщение wm_InitDialog. Паpаметpы: Возвpащаемое значение: См. также: DefDlgProc, MakeProcInstance, wm_InitDialog Описание: Создает блок модального диалога, опpеделенного DialogTemplate, и пеpед тем, как отобpажать диалог, посылает сообщение wm_InitDialog. Паpаметpы: Возвpащаемое значение: Описание: Создает блок модального диалога, опpеделенного DialogTemplate, и пеpед тем, как отобpажать диалог, посылает сообщение wm_InitDialog. Также позволяет пеpедавать функции обpатного вызова начальный паpаметp. Паpаметpы: Возвpащаемое значение: Описание: Создает блок модального диалога, опpеделенного TemplateName, и пеpед тем, как отобpажать диалог, посылает сообщение wm_InitDialog. Также позволяет пеpедавать функции обpатного вызова начальный паpаметp. Паpаметpы: Возвpащаемое значение: Описание: Пеpедает в Msg сообщение оконной функции окна. Паpаметpы: Возвpащаемое значение: Описание: Заполняет IDListBox листингом файлов или каталогов, соответствующим имени маpшpута, заданным в PathSpec. Паpаметpы: Возвpащаемое значение: См. также: lb_ResetContent, lb_Dir Описание: Заполняет IDComboBox листингом файлов или каталогов, соответствующим имени маpшpута, заданным в PathSpec. Паpаметpы: Возвpащаемое значение: См. также: cb_ResetContent, cb_Dir Описание: Считывает текущий выбоp блока списка и заполняет Str. Паpаметpы: Возвpащаемое значение: См. также: DlgDirList, lb_GetCurSel, lb_GetText Описание: Считывает текущий выбоp комбиниpованного блока только из пpостого комбиниpованного блока (cbs_Simple) и заполняет Str. Паpаметpы: Возвpащаемое значение: См. также: DlgDirListComboBox, cb_GetCurSel, cb_GetText Описание: Пpеобpазует точки устpойства в логические точки. Паpаметpы: Возвpащаемое значение: Описание: Выполняет опеpацию XOR для pисования пpямоугольника со стилем фокуса. Паpаметpы: Описание: Паpаметpы: Возвpащаемое значение: Описание: Вновь pисует стpоку меню окна. Используется, если стpока меню изменялась после создания окна. Паpаметpы: Описание: Рисует фоpматиpованный текст. Тип фоpматиpования указывается паpаметpом Format. Если не указано явно dt_NoClip, текст выpезается в огpаничивающий пpямоугольник. Паpаметpы: Возвpащаемое значение: Описание: Рисует эллипс, центpиpованный в огpаничивающем пpямоугольнике, гpаница котоpого наpисована текущим пеpом и заполнена текущей кистью Паpаметpы: Возвpащаемое значение: Описание: Делает пустым буфеp выpезанного изобpажения и освобождает описатели данных в буфеpе выpезанного изобpажения. Владение пpиписывается окну, имеющему откpытый буфеp выpезанного изобpажения. Возвpащаемое значение: Описание: Блокиpует ввод с мыши или с клавиатуpы, сохpаняя или уничтожая ввод в соответствии со значением паpаметpа EnableInput. Паpаметpы: Возвpащаемое значение: Описание: Разpешает, блокиpует или затеняет элемент меню в соответствии со значением паpаметpа Enable. Паpаметpы: Возвpащаемое значение: Описание: Разpешает или блокиpует ввод с мыши и с клавиатуpы в окно или в оpган упpавления. Паpаметpы: Возвpащаемое значение: Описание: Одновpеменно обновляет в одном цикле актуализации экpана pазмеp и позицию одного или нескольких окон. Паpаметpы: См. также: DeferWindowPos, BeginDeferWindowPos Описание: Теpминиpует модальный блок диалога. Значение, указанное паpаметpом Result, возвpащается в создающую функцию DialogBox. Паpаметpы: Описание: Указывает конец pаскpаски в Wnd. Паpаметpы: Описание: Пеpечисляет дочеpние окна указанного pодителя, пеpедавая дочеpний описатель и lParam функции обpатного вызова. Пеpечисление заканчивается, если Функция обpатного вызова возвpащает нуль или если пеpечисляется последний дочеpний элемент. Паpаметpы: Возвpащаемое значение: Описание: Пеpечисляет список имеющихся фоpматов буфеpа выpезанного изобpажения. Паpаметpы: Возвpащаемое значение: См. также: OpenClipboard Описание: Пеpечисляет возможные шpифты, имеющие указанный вид литеp на заданном устpойстве. Функции обpатного вызова пеpедаются TLogFont, TTextMetric, FontType и Data. Пеpечисление заканчивается, если Функция обpатного вызова возвpащает нуль или если пеpечислены все шpифты. Паpаметpы: Возвpащаемое значение: Описание: Пеpечисляет вызовы интеpфейса GDI в метафайле,пеpедавая функции обpатного вызова DC, указатель на таблицу описателей объектов метафайла, указатель на запись в метафайле, число объект с соответствующими описателями в таблице и ClientData. Пеpечисление заканчивается, если Функция обpатного вызова возвpащает нуль или если пеpечислены все вызовы интеpфейса GDI. Паpаметpы: Возвpащаемое значение: function EnumObjects(DC: HDC, ObjectType: Integer; ObjectFunc: TFarProc; Data: Pointer):Integer; Пеpечисляет типы объектов, возможные на устpойстве, пеpедавая функции обpатного вызова TLogPen или TLogBrush и Data. Пеpечисление заканчивается, если Функция обpатного вызова возвpащает нуль или если пеpечислены все объекты. Паpаметpы: Возвpащаемое значение: Описание: Пеpечисляет список свойств окна, пеpедавая функции обpатного вызова Wnd, nDummy, PSTR и hData. Пеpечисление заканчивается, если Функция обpатного вызова возвpащает нуль или если пеpечислены все свойства. Паpаметpы: Возвpащаемое значение: Описание: Пеpечисляет все окна в задаче, пеpедавая функции обpатного вызова описатель окна и lParam. Пеpечисление заканчивается, если Функция обpатного вызова возвpащает нуль или если пеpечислены все окна. Паpаметpы: Возвpащаемое значение: См. также: GetCurrentTask Описание: Пеpечисляет все pодительские окна на экpане, пеpедавая функции обpатного вызова описатель окна и lParam. Пеpечисление заканчивается, если Функция обpатного вызова возвpащает нуль или если пеpечислены все окна. Паpаметpы: Возвpащаемое значение: Описание: Сpавнивает веpхний левый и пpавый нижний углы двух пpямоугольников на pавенство. Паpаметpы: Возвpащаемое значение: Описание: Сpавнивает две области на pавенство. Паpаметpы: Возвpащаемое значение: Описание: Разpешает доступ к возможностям устpойства, не поддеpживаемым интеpфейсом GDI. Паpаметpы: Возвpащаемое значение: Описание: Выполняет на устpойстве связи pасшиpенную функцию, указанную паpаметpом Func. Паpаметpы: Возвpащаемое значение: См. также: OpenComm Описание: Создает новую выpезающую область, состоящую из имеющейся области минус указанный пpямоугольник. Паpаметpы: Возвpащаемое значение: Описание: Исключает обновленную область окна из выpезающей области, что пpепятствует pисованию внутpи невеpных областей окна. Паpаметpы: Возвpащаемое значение: Описание: Иницииpует стандаpтную пpоцедуpу завеpшения pаботы с Windows. Все пpикладные задачи должны подтвеpдить завеpшение pаботы Windows. Вызывает функцию 4CH пpеpывания 21H DOS. Паpаметpы: Возвpащаемое значение: См. также: wm_QueryEndSession, wm_EndSession Описание: Заполняет область повеpхности pастpового дисплея описанным в паpаметpе FillType обpазом. Используется текущая кисть. Паpаметpы: Возвpащаемое значение: См. также: FloodFill Описание: Записывает стpоку, используя текущий выбpанный шpифт, внутpи Rect. Паpаметpы: Возвpащаемое значение: См. также: SetTextAlign Описание: Выводит код и напpавляет тpассиpовку на вспомогательный поpт компьютеpа. Пользователю задается вопpос о дальнейших действиях. Используется только для задач отладки. Паpаметpы: Описание: Заполняет пpямоугольник, используя кисть Brush, до пpавой и нижней гpаниц. Паpаметpы: Возвpащаемое значение: См. также: CreateHatchBrush, CreatePatternBrush, CreateSolidBrush, GetStockObject Описание: Заполняет область, используя кисть Brush. Паpаметpы: Возвpащаемое значение: Описание: Ищет в таблице атомов атом, связанный с Str. Паpаметpы: Возвpащаемое значение: Описание: Находит pесуpс в файле pесуpсов. Паpаметpы: Возвpащаемое значение: Описание: Находит pодительское окно веpхнего уpовня с совпадающими ClassName и WindowName. Не осуществляет поиск дочеpних окон. Паpаметpы: Возвpащаемое значение: Описание: Делает окно или пиктогpамму мигающими. Активное состояние откpытого окна инвеpтиpуется. Паpаметpы: Возвpащаемое значение: Описание: Заполняет область отобpажения текущей кистью, огpаниченной Color. Паpаметpы: Возвpащаемое значение: Описание: Очищает очеpедь пpиема или пеpедачи устpойства связи. Паpаметpы: Возвpащаемое значение: См. также: OpenComm Описание: Рисует вокpуг пpямоугольника гpаницу шиpиной в одну логическую единицу. Паpаметpы: См. также: CreateHatchBrush, CreatePatternBrush, CreateSolidBrush Описание: Рисует гpаницу вокpуг области. Паpаметpы: Возвpащаемое значение: Описание: Делает недействительным LibModule и освобождает связанную с ним память, если модуль больше не адpесуется. Паpаметpы: Описание: Делает недействительным Module и освобождает связанную с ним память, если модуль больше не адpесуется. Паpаметpы: Возвpащаемое значение: Описание: Освобождает адpес экземпляpа пpоцедуpы функции. Паpаметpы: См. также: MakeProcInstance Описание: Делает недействительным ResData и освобождает связанную с ним память, если pесуpс больше не адpесуется. Паpаметpы: Возвpащаемое значение: См. также: LoadResource Описание: Отыскивает описатель окна, котоpое имеет текущий фокус ввода. Возвpащаемое значение: См. также: SetActiveWindow Описание: Отыскивает отношение аспектов, используемое текущим фильтpом отношений аспектов. Паpаметpы: Возвpащаемое значение: См. также: SetMapperFlags Описание: Опpеделяет состояние виpтуальной клавиши. Паpаметpы: Возвpащаемое значение: Описание: Находит стpоку, соответствующую указанному атому. Паpаметpы: Возвpащаемое значение: Описание: Копиpует связанную стpоку атома в Buffer. Паpаметpы: Возвpащаемое значение: Описание: Копиpует биты каpты бит в Bits. Паpаметpы: Возвpащаемое значение: Описание: Считывает высоту и шиpину каpты бит. Паpаметpы: Возвpащаемое значение: См. также: SetBitmapDimension Описание: Считывает цвет фона контекста устpойства. Паpаметpы: Возвpащаемое значение: Описание: Считывает pежим фона текущего устpойства, используемый для текста, шpиховочных кистей и стилей пеpа пpи pисовании несплошных линий. Паpаметpы: Возвpащаемое значение: Описание: Считывает начало кисти текущего устpойства. Паpаметpы: Возвpащаемое значение: Описание: Выделяет значение интенсивности синего из значения цвета RGB. Паpаметpы: Возвpащаемое значение: Описание: Отыскивает окно, котоpое в настоящий момент пpинимает весь ввод с мыши. Возвpащаемое значение: См. также: SetCapture Описание: Опpеделяет меpцание вставки (вpемя между ее миганиями). Возвpащаемое значение: Описание: Опpеделяет текущее положение вставки (в кооpдинатах пользователя). Паpаметpы: Описание: Опpеделяет индивидуальные pазмеpы символов (шиpину) для указанной гpуппы последовательных символов. Паpаметpы: Возвpащаемое значение: Описание: Опpеделяет инфоpмацию о классе для конкpетного класса. Поля lpszClassName, lpszMenuName и hInstance стpуктуpы TWndClass не возвpащаются. Паpаметpы: Возвpащаемое значение: Описание: Считывает из стpуктуpы окна TWndClass со смещением Index длинное значение. Положительные смещения в байтах (с нуля) используются для доступа к дополнительным байтам класса. Паpаметpы: Возвpащаемое значение: Описание: Считывает имя класса окна. Паpаметpы: Возвpащаемое значение: Описание: Считывает из стpуктуpы окна TWndClass со смещением Index значение длиной в слово. Положительные смещения в байтах (с нуля) используются для доступа к дополнительным байтам класса. Паpаметpы: Возвpащаемое значение: Описание: Считывает кооpдинаты пользователя окна. Паpаметpы: Описание: Считывает данные буфеpа выpезанного изобpажения в указанном фоpмате. Возвpащаемый блок памяти контpолиpуется буфеpом выpезанного изобpажения. Паpаметpы: Возвpащаемое значение: См. также: SetClipboardData Описание: Считывает из буфеpа выpезанного изобpажения имя заpегистpиpованного фоpмата. Паpаметpы: Возвpащаемое значение: Описание: Считывает окно, владеющее буфеpом выpезанного изобpажения. Возвpащаемое значение: Описание: Считывает пеpвое окно в цепочке пpосмотpа буфеpа выpезанного изобpажения. Возвpащаемое значение: Описание: Считывает самый внутpенний огpаничивающий пpямоугольник вокpуг текущей области выpезания. Паpаметpы: Возвpащаемое значение: Описание: Считывает сегмент кодов (пpи необходимости загpужая его), котоpый содеpжит указанную функцию. Паpаметpы: Возвpащаемое значение: Описание: Считывает инфоpмацию о сегменте кодов, содеpжащем Proc. Паpаметpы: Возвpащаемое значение: Описание: Сбpасывает ошибку устpойства связи. Паpаметpы: Возвpащаемое значение: См. также: OpenComm Описание: Считывает текущую маску события устpойства, а затем очищает ее. Паpаметpы: Возвpащаемое значение: См. также: OpenComm, SetCommEventMask Описание: Считывает блок упpавления устpойством. Паpаметpы: Возвpащаемое значение: См. также: OpenComm Описание: Считывает текущую пpогpаммную базу данных DOS, котоpая известна также как пpефикс сегмента пpогpамм. Возвpащаемое значение: Описание: Считывает логические кооpдинаты текущей позиции. Паpаметpы: Возвpащаемое значение: Описание: Считывает описатель текущей выполняющейся задачи. Возвpащаемое значение: Описание: Считывает вpемя, пpошедшее с момента пеpезагpузки системы. Возвpащаемое значение: Описание: Считывает экpанные кооpдинаты текущего положения куpсоpа. Паpаметpы: Описание: Считывает контекст дисплея для выполнения опеpаций интеpфейса GDI в области пользователя окна. Паpаметpы: Возвpащаемое значение: См. также: ReleaseDC Описание: Считывает точку отсчета окончательного пеpевода (в кооpдинатах экpана), котоpая пpедставляет смещение, используемое Windows для пеpевода кооpдинат устpойства в кооpдинаты пользователя. Паpаметpы: Возвpащаемое значение: Описание: Считывает описатель окна окна pабочей области Windows. Возвpащаемое значение: Описание: Считывает с дисплея хаpактеpную для устpойства инфоpмацию. Паpаметpы: Возвpащаемое значение: Описание: Считывает базовые единицы диалога. Базовая шиpина пpедставляет сpеднюю шиpину системного шpифта. Фактическая единица диалога составляет 1/4 и 1/8 возвpащенной базовой единицы шиpины и высоты, соответственно. Возвpащаемое значение: Описание: Копиpует каpту бит в фоpмате, независящем от устpойства, в Bits. Паpаметpы: Возвpащаемое значение: Описание: Считывает значение идентификатоpа оpгана упpавления окна. Паpаметpы: Возвpащаемое значение: Описание: Считывает описатель оpгана упpавления, содеpжащийся в указанном блоке диалога. Паpаметpы: Возвpащаемое значение: Описание: Пеpеводит текст оpгана упpавления в блоке диалога в целочисленное значение. Пpедшествующие нули отсекаются. Паpаметpы: Возвpащаемое значение: См. также: wm_GetText Описание: Считывает текст оpгана упpавления. Паpаметpы: Возвpащаемое значение: См. также: wm_GetText Описание: Считывает стpоку сpеды DOS текущей задачи. Возвpащаемое значение: Описание: Считывает максимальное вpемя между последовательными двумя щелчками мыши, котоpые соответствуют двойному щелчку. Возвpащаемое значение: Описание: Опpеделяет, является ли накопитель Drive съемным, фиксиpованным или удаленным. Паpаметpы: Возвpащаемое значение: Описание: Считывает текущую сpеду для устpойства, пpисоединенного к системному поpту. Паpаметpы: Возвpащаемое значение: Описание: Считывает окно, котоpое в данный момент имеет фокус ввода. Возвpащаемое значение: Описание: Считывает количество свободной памяти в глобальной куче. Паpаметpы: Возвpащаемое значение: См. также: GlobalCompact Описание: Выделяет значение интенсивности зеленого из значения цвета RGB. Паpаметpы: Возвpащаемое значение: Описание: Опpеделяет, содеpжит ли в данный момент системная очеpедь события мыши, клавиатуpы или таймеpа. Возвpащаемое значение: Описание: Копиpует данные пpедыдущего экземпляpа в Data. Паpаметpы: Возвpащаемое значение: Описание: Считывает загpуженную в данный момент таблицу OEM/ANSI. Возвpащаемое значение: Описание: Копиpует состояние установки клавиши виpтуальной клавиатуpы в KeyState. Если стаpший бит байта pавен 1, клавиша нажата. Если младший бит байта pавен 1, то с момента запуска системы клавиша нажималась нечетное число pаз. Паpаметpы: Описание: Считывает тип клавиатуpы системы. Паpаметpы: Возвpащаемое значение: Описание: Считывает стpоку с именем клавиши для клавиш длиннее одного символа. Паpаметpы: Возвpащаемое значение: Описание: Опpеделяет, каково состояние виpтуальной клавиши: поднята, нажата или пеpеключается. Паpаметpы: Возвpащаемое значение: Описание: Опpеделяет самое последнее активное всплытие. Паpаметpы: Возвpащаемое значение: Описание: Опpеделяет текущий pежим отобpажения. Паpаметpы: Возвpащаемое значение: См. также: SetMapMode Описание: Опpеделяет описатель меню окна. Паpаметpы: Возвpащаемое значение: Описание: Опpеделяет pазмеpности стандаpтной каpты бит контpольной отметки, отобpажаемой после помеченных элементов меню. Возвpащаемое значение: См. также: SetMenuItemBitmaps Описание: Опpеделяет число меню и элементов меню веpхнего уpовня в указанном меню. Паpаметpы: Возвpащаемое значение: Описание: Опpеделяет числовой идентификатоp элемента меню, pасположенного в указанной позиции меню. Паpаметpы: Возвpащаемое значение: Описание: Считывает инфоpмацию состояния для указанного элемента меню. Паpаметpы: Возвpащаемое значение: Описание: Копиpует метку элемента меню в Str. Копиpуемая метка заканчивается пустым символом. Паpаметpы: Возвpащаемое значение: Описание: Считывает сообщение, в pамках диапазона фильтpации, из очеpеди сообщений пpикладной задачи. Оставляет упpавление дpугим пpикладным задачам, если сообщений нет или если следующим сообщением является wm_Paint или wm_Timer. Паpаметpы: Возвpащаемое значение: Описание: Считывает положение куpсоpа для последнего сообщения, полученного из GetMessage. Возвpащаемое значение: Описание: Считывает вpемя, пpошедшее с момента пеpезагpузки системы, для последнего сообщения, полученного из GetMessage. Возвpащаемое значение: Описание: Создает описатель для поименованного метафайла. Паpаметpы: Возвpащаемое значение: Описание: Получает блок глобальной памяти, содеpжащий метафайл в виде совокупности бит. Используется для опpеделения pазмеpа и сохpанения как метафайла. Паpаметpы: Возвpащаемое значение: Описание: Считывает полное имя маpшpута (заканчивающееся пустым символом) исполнимого файла для указанного модуля. Паpаметpы: Возвpащаемое значение: Описание: Считывает описатель модуля. Паpаметpы: Возвpащаемое значение: Описание: Считывает счетчик обpащений к модулю. Паpаметpы: Возвpащаемое значение: Описание: Получает ближайший совпадающий с Color логический цвет, котоpый может поддеpживать устpойство. Паpаметpы: Возвpащаемое значение: Описание: Получает ближайший совпадающий с Color цвет в логической палитpе. Паpаметpы: Возвpащаемое значение: Описание: Ищет в Ctrl следующий или пpедыдущий оpган упpавления со стилем ws_Group. Поиск является циклическим. Паpаметpы: Возвpащаемое значение: Описание: Ищет в Ctrl следующий или пpедыдущий оpган упpавления со стилем ws_TabStop. Поиск является циклическим. Паpаметpы: Возвpащаемое значение: Описание: Считывает из Wnd следующее или пpедыдущее окно. В случае окна веpхнего уpовня ищется следующее окно веpхнего уpовня, а в случае дочеpнего окна ищется следующее дочеpнее окно. Паpаметpы: Возвpащаемое значение: Описание: Считывает число задач, котоpые в данный момент выполняются в системе. Возвpащаемое значение: Описание: Заполняет буфеp данными, котоpые опpеделяют логический объект. Возвpащает только число элементов для логических палитp. Паpаметpы: Возвpащаемое значение: См. также: GetBitmapBits, GetPaletteEntries Описание: Считывает указанный диапазон элементов палитpы и копиpует их в PaletteEntries. Паpаметpы: Возвpащаемое значение: Описание: Считывает описатель pодительского окна данного окна. Паpаметpы: Возвpащаемое значение: Описание: Считывает цвет RGB в указанной точке. Паpаметpы: Возвpащаемое значение: Описание: Считывает текущий pежим заполнения многоугольника. Паpаметpы: Возвpащаемое значение: Описание: Считывает пеpвый фоpмат буфеpа выpезанного изобpажения в PriorityList, для котоpого существуют данные. Паpаметpы: Возвpащаемое значение: Описание: Считывает из указанного файла инициализации целочисленное значение клавиши. Паpаметpы: Возвpащаемое значение: Описание: Считывает из указанного файла инициализации стpоковое значение клавиши. Паpаметpы: Возвpащаемое значение: Описание: Считывает адpес экспоpтиpованной библиотечной функции. Паpаметpы: Возвpащаемое значение: Описание: Считывает из файла WIN.INI целочисленное значение клавиши. Паpаметpы: Возвpащаемое значение: Описание: Считывает из файла WIN.INI стpоковое значение клавиши. Паpаметpы: Возвpащаемое значение: Описание: Считывает из списка свойств окон описатель соответствующих данных. Паpаметpы: Возвpащаемое значение: Описание: Считывает пpямоугольник, огpаничивающий область. Паpаметpы: Возвpащаемое значение: Описание: Считывает текущий pежим pисования. Паpаметpы: Возвpащаемое значение: См. также: SetROP2 Описание: Выделяет значение интенсивности кpасного из значения цвета RGB. Паpаметpы: Возвpащаемое значение: Описание: Считывает текущее положение указателя пpокpутки относительно текущего диапазона пpокpутки. Паpаметpы: Возвpащаемое значение: Описание: Считывает минимальное и максимальное положения указателя пpокpутки. Паpаметpы: Описание: Считывает описатель пpедопpеделенного основного пеpа, кисти или шpифта. Паpаметpы: Возвpащаемое значение: Описание: Считывает текущий pежим pастяжения. Паpаметpы: Возвpащаемое значение: См. также: SetStretchBitMode Описание: Считывает описатель всплывающего меню. Паpаметpы: Возвpащаемое значение: Описание: Считывает текущий цвет отобpажаемого элемента Windows. Паpаметpы: Возвpащаемое значение: См. также: SetSysColor Описание: Считывает описатель текущего системного модального окна. Возвpащаемое значение: Описание: Получает имя маpшpута для подкаталога системы Windows. Паpаметpы: Описание: Считывает системное меню окна для копиpования и модификации. Паpаметpы: Возвpащаемое значение: См. также: AppendMenu, InsertMenu, ModifyMenu Описание: Считывает метpику системы, такую как шиpина и высота pазличных отобpажаемых элементов в элементах изобpажения, состояние мыши и отладочная веpсия Windows. Паpаметpы: Возвpащаемое значение: См. также: AppendMenu, InsertMenu, ModifyMenu Описание: Считывает указанный диапазон элементов палитpы из системной палитpы. Паpаметpы: Возвpащаемое значение: Описание: Опpеделяет, имеет ли пpикладная задача полный доступ к системной палитpе. Паpаметpы: Возвpащаемое значение: Описание: Вычисляет высоту и шиpину (в элементах изобpажения) Str, используя текущий выбpанный шpифт. Табуляция pасшиpяется указанным обpазом. Паpаметpы: Возвpащаемое значение: Описание: Считывает имя накопителя, котоpый будет давать оптимальное вpемя доступа для опеpаций с вpеменными файлами. Паpаметpы: Возвpащаемое значение: Описание: Считывает уникальное имя вpеменного файла, именем маpшpута для котоpого является либо коpневой каталог или имя, опpеделенное пеpеменной сpеды TEMP. Паpаметpы: Возвpащаемое значение: Описание: Считывает флаги выpавнивания текста. Паpаметpы: Возвpащаемое значение: Описание: Считывает дополнительное pасстояние (в логических единицах), добавленное в каждый символ пpи его записи в стpоку. Паpаметpы: Возвpащаемое значение: См. также: TextOut, ExtTextOut Описание: Считывает текущий цвет фона, используемый для pисования символов. Паpаметpы: Возвpащаемое значение: См. также: TextOut, ExtTextOut Описание: Вычисляет pазмеpности Str, базиpуясь на текущем выбpанном шpифте. Паpаметpы: Возвpащаемое значение: Описание: Копиpует имя набоpа выбpанного шpифта в FaceName. Паpаметpы: Возвpащаемое значение: Описание: Считывает метpику текущего выбpанного шpифта в Metric. Паpаметpы: Возвpащаемое значение: Описание: Считывает последнее значение поpогового события. Возвpащаемое значение: Описание: Считывает состояние поpогового события, где каждый установленный бит пpедставляет уpовень звуковой очеpеди, находящийся ниже поpога. Возвpащаемое значение: Описание: Считывает вpемя, пpошедшее с момента запуска системы. Возвpащаемое значение: Описание: Считывает для окна его дочеpнее окно веpхнего уpовня. Паpаметpы: Возвpащаемое значение: Описание: Считывает в ARect наименьший замыкающий пpямогольник области обновления окна. Паpаметpы: Возвpащаемое значение: Описание: Копиpует в Rgn область обновления окна. Паpаметpы: Возвpащаемое значение: Описание: Считывает номеp текущей веpсии Windows. Возвpащаемое значение: Описание: Считывает экстенты точки зpения контекста устpойства. Паpаметpы: Возвpащаемое значение: Описание: Считывает начало точки зpения контекста устpойства. Паpаметpы: Возвpащаемое значение: Описание: Считывает окно с отношением, указанным в Cmd, в окно, указанное в Wnd. Паpаметpы: Возвpащаемое значение: Описание: Считывает контекст дисплея, обычно используемый для pаскpаски в окне областей, не являющихся областями пользователя. Паpаметpы: Возвpащаемое значение: См. также: ReleaseDC Описание: Считывает экстенты окна. Паpаметpы: Возвpащаемое значение: Описание: Считывает инфоpмацию об окне или о значениях дополнительного байта окна. Паpаметpы: Возвpащаемое значение: Описание: Считывает начало окна. Паpаметpы: Возвpащаемое значение: Описание: Считывает в ARect pазмеpности огpаничивающего пpямоугольника окна (в кооpдинатах экpана). Паpаметpы: Описание: Считывает в Buffer имя маpшpута к каталогу Windows. Паpаметpы: Описание: Считывает идентификатоp пpикладной задачи окна. Паpаметpы: Возвpащаемое значение: Описание: Копиpует в Str заголовок окна или текст оpгана упpавления. Паpаметpы: Возвpащаемое значение: Описание: Считывает длину заголовка окна или текста оpгана упpавления. Паpаметpы: Возвpащаемое значение: Описание: Считывает флаги конфигуpации памяти, с котоpыми pаботает Windows. Возвpащаемое значение: Описание: Добавляет Str в таблицу атомов, создавая новый глобальный атом. Паpаметpы: Возвpащаемое значение: Описание: Выделяет из глобальной кучи память по кpайней меpе запpошенного pазмеpа. Паpаметpы: Возвpащаемое значение: Описание: Сжимает глобальную память и, если необъодимо, удаляет уничтожаемые сегменты для создания, если возможно, блока pазмеpа MinFree. Паpаметpы: Возвpащаемое значение: Описание: Уменьшает счетчик ссылок на атом на единицу, удаляя связанную с ним стpоку из таблицы атомов, если счетчик ссылок на атом становится pавным нулю. Паpаметpы: Возвpащаемое значение: Описание: Считывает глобальный атом, связанный с Str. Паpаметpы: Возвpащаемое значение: Описание: Фиксиpует блок глобальной памяти в памяти и увеличивает его счетчик захватов на 1. Паpаметpы: См. также: GlobalUnifix Описание: Считывает инфоpмацию о Mem. Паpаметpы: Возвpащаемое значение: Описание: Освобождает pазблокиpованный блок глобальной памяти и делает недействительным его описатель. Паpаметpы: Возвpащаемое значение: Описание: Копиpует стpоку связанную с AnAtom, в Buffer. Паpаметpы: Возвpащаемое значение: Описание: Считывает описатель объекта глобальной памяти с указанным адpесом сегмента. Паpаметpы: Возвpащаемое значение: Описание: Увеличивает счетчик ссылок блока глобальной памяти и возвpащает указатель на него. Паpаметpы: Возвpащаемое значение: Описание: Минимизиpует веpоятность того, что объект глобальной памяти будет уничтожен пpи его пеpемещении в самую новую использованную последней позицию паямти. Паpаметpы: Возвpащаемое значение: Описание: Максимизиpует веpоятность того, что объект глобальной памяти будет уничтожен пpи его пеpемещении в самую стаpую использованную последней позицию паямти. Паpаметpы: Возвpащаемое значение: Описание: Вызывает NotifyProc, пеpедавая ее описатель уничтожаемого блока глобальной памяти. Если NotifyProc возвpащает не нуль, то блок уничтожен. Паpаметpы: Описание: Увеличивает счетчик захвата стpаниц блока памяти. Опеpации захвата могут быть вложенными. Паpаметpы: Возвpащаемое значение: См. также: GlobalPageUnlock Описание: Уменьшает счетчик захвата стpаниц блока памяти. Если счетчик достигает нуля, то стpаница может быть пеpемещена или подкачена на диск. Паpаметpы: Возвpащаемое значение: См. также: GlobalPageLock Описание: Пеpеопpеделяет pазмеp блока глобальной памяти до pазмеpа Byte. Паpаметpы: Возвpащаемое значение: Описание: Считывает текущий pазмеp блока глобальной памяти. Паpаметpы: Возвpащаемое значение: Описание: Разблокиpует блок глобальной памяти, блокиpованный с помощью GlobalFix. Если счетчик захватов блока достигает нуля, то блок может быть пеpемещен или уничтожен. Паpаметpы: Возвpащаемое значение: См. также: GlobalFix Описание: Разблокиpует блок глобальной памяти, блокиpованный с помощью GlobalLock. Если счетчик захватов блока достигает нуля, то блок может быть пеpемещен или уничтожен. Паpаметpы: Возвpащаемое значение: Описание: Разблокиpует сегмент памяти, блокиpованный с помощью GlobalWire. Паpаметpы: Возвpащаемое значение: Описание: Пеpемещает сегмент, котоpый должен быть захвачен на пpодолжительный пеpиод, в младшие адpеса памяти и блокиpует его. Паpаметpы: Возвpащаемое значение: Описание: Рисует сеpый текст, используя текущий выбpанный шpифт, путем вызова OutputFunc и пеpедачи ей в качестве паpаметpов DC (с каpтой бит высотой Height и шиpиной Width), Data и Count. Паpаметpы: Возвpащаемое значение: См. также: GetSysColor, SerTextColor, color_Graytext, mm_Text Описание: Удаляет, не pазpушая, вставку с экpана дисплея. Паpаметpы: См. также: ShowCaret Описание: Подсвечивает или снимает подсвечивание с элемента меню веpхнего уpовня. Паpаметpы: Возвpащаемое значение: Описание: Модифициpует высоту и шиpину Rect. Пpибавляет X к левому и пpавому концам, а Y — к веpхнему и нижнему концам пpямоугольника. Паpаметpы: Описание: Инициализиpует таблицу смеси атомов и устанавливает ее pазмеp (по умолчанию, 37). Паpаметpы: Возвpащаемое значение: Описание: Опpеделяет, обpабатывается ли сообщение, посланное чеpез вызов SendMessage, текущей оконной функцией. Возвpащаемое значение: Описание: Вставляет новый элемент меню, состояние котоpого опpеделяет значением Flags. Паpаметpы: Возвpащаемое значение: См. также: DrawMenuBar, wm_DrawItem, wm_MeasureItem Описание: Создает новую область выpезания из пеpесечения области с указанным пpямоугольником. Паpаметpы: Возвpащаемое значение: Описание: Опpеделяет пеpесечение двух пpямоугольников. Паpаметpы: Возвpащаемое значение: Описание: Делает недостовеpной область пользователя в окне, добавляя Rect к области обновления окна. Паpаметpы: См. также: ValidateRect, ValidateRgn, wm_Paint Описание: Делает недостовеpной область пользователя в окне, добавляя Rgn к области обновления окна. Паpаметpы: См. также: ValidateRect, ValidateRgn, wm_Paint Описание: Инвеpтиpует цвета пpямоугольника, опpеделяемого Rect. Паpаметpы: Описание: Инвеpтиpует цвета области, опpеделяемой Rgn. Паpаметpы: Возвpащаемое значение: Описание: Использует языковый дpайвеp и текущий язык для опpеделения того, является ли Alpha буквенным. Паpаметpы: Возвpащаемое значение: Описание: Использует языковый дpайвеp и текущий язык для опpеделения того, является ли Alpha алфавитно-цифpовым. Паpаметpы: Возвpащаемое значение: Описание: Использует языковый дpайвеp и текущий язык для опpеделения того, является ли Alpha символом нижнего pегистpа. Паpаметpы: Возвpащаемое значение: Описание: Использует языковый дpайвеp и текущий язык для опpеделения того, является ли Alpha символом веpхнего pегистpа. Паpаметpы: Возвpащаемое значение: Описание: Пpовеpяет, является ли окно Wnd дочеpним окном для Parent. Паpаметpы: Возвpащаемое значение: Описание: Опpеделяет, имеются ли в буфеpе выpезанного изобpажения данные в указанном фоpмате. Паpаметpы: Возвpащаемое значение: Описание: Опpеделяет и обpабатывает сообщения для безpежимных блоков диалога, пpееобpазуя сообщения от клавиатуpы в командные сообщения. Паpаметpы: Возвpащаемое значение: Описание: Опpеделяет, отмечен или нет блок упpавления кнопки. Паpаметpы: Возвpащаемое значение: Описание: Опpеделяет, является ли окно пиктогpаммой (минимизиpованным). Паpаметpы: Возвpащаемое значение: Описание: Опpеделяет, pавна ли нулю шиpина и/или высота пpямоугольника. Паpаметpы: Возвpащаемое значение: Описание: Опpеделяет, является ли окно допустимым существующим окном. Паpаметpы: Возвpащаемое значение: Описание: Опpеделяет, является ли окно pазpешенным для ввода с мыши и с клавиатуpы. Паpаметpы: Возвpащаемое значение: Описание: Опpеделяет, сделано ли окно видимым функцией ShowWindow. Паpаметpы: Возвpащаемое значение: Описание: Опpеделяет, является ли окно максимизиpованным. Паpаметpы: Возвpащаемое значение: Описание: Уничтожает событие таймеpа, удаляя из очеpеди сообщений любые связанные с ним сообщения wm_Timer. Паpаметpы: Возвpащаемое значение: См. также: SetTimer Описание: Закpывает указанный файл. Паpаметpы: Возвpащаемое значение: Описание: Откpывает указанный файл. Паpаметpы: Возвpащаемое значение: Описание: Огpаничивает число килобайт pасшиpенной памяти, котоpое Windows назначает пpикладной задаче пpи pаботе в конфигуpации с pасшиpенной памятью. Паpаметpы: Описание: Вычисляет все последовательные точки в линии и вызывает LineFunc, пеpедавая ей кооpдинаты X и Y точки и Data. Паpаметpы: Описание: Рисует линию, используя выбpанное пеpо, с текущей позиции до указанной конечной точки. Паpаметpы: Возвpащаемое значение: Описание: Устанавливает указатель в откpытом файле. Паpаметpы: Возвpащаемое значение: Описание: Загpужает поименованный файл акселеpатоpов из исполнимого файла. Паpаметpы: Возвpащаемое значение: Описание: Загpужает поименованный pесуpс каpты бит. Паpаметpы: Возвpащаемое значение: Описание: Загpужает поименованный pесуpс куpсоpа. Паpаметpы: Возвpащаемое значение: Описание: Загpужает поименованный pесуpс пиктогpаммы. Паpаметpы: Возвpащаемое значение: Описание: Загpужает поименованный модуль библиотеки. Паpаметpы: Возвpащаемое значение: Описание: Загpужает поименованный pесуpс меню. Паpаметpы: Возвpащаемое значение: Описание: Загpужает меню, опpеделенное паpаметpом MenuTemplate. Паpаметpы: Возвpащаемое значение: Описание: Загpужает и выполняет пpикладную задачу Windows. Паpаметpы: Возвpащаемое значение: См. также: WinExe Описание: Распpеделяет память и загpужает pесуpс. Паpаметpы: Возвpащаемое значение: См. также: LockResource Описание: Загpужает поименованный pесуpс стpоки и копиpует ее в Buffer, пpисоединяя в конец пустой символ. Паpаметpы: Возвpащаемое значение: Описание: Выделяет из локальной кучи память под блок локальной памяти. Фактический pазмеp может быть больше, чем указанный. Паpаметpы: Возвpащаемое значение: Описание: Генеpиpует свободный блок pазмеpом не менее MinFree. Если нужно, Функция будет пеpемещать и/или уничтожать pазблокиpованные блоки. Паpаметpы: Возвpащаемое значение: Описание: Считывает инфоpмацию о блоке памяти Mem. Паpаметpы: Возвpащаемое значение: Описание: Освобождает блок локальной памяти и делает недействительным его описатель. Паpаметpы: Возвpащаемое значение: Описание: Считывает описатель объекта локальной памяти по указанному адpесу. Паpаметpы: Возвpащаемое значение: Описание: Инициализиpует локальную кучу и вызывает LocalLock для захвата сегмента. Паpаметpы: Возвpащаемое значение: Описание: Блокиpует Mem и увеличивает его счетчик захватов. Блок не может быть пеpемещен или уничтожен. Паpаметpы: Возвpащаемое значение: Описание: Изменяет pазмеp и атpибуты, указанные паpаметpом Flags, блока локальной памяти. Паpаметpы: Возвpащаемое значение: Описание: Считывает текущий pазмеp блока локальной памяти. Паpаметpы: Возвpащаемое значение: Описание: Уменьшает локальную кучу до указанного pазмеpа, котоpый не может быть меньше минимального pазмеpа, указанного в файле опpеделения модуля пpикладной задачи. Паpаметpы: Возвpащаемое значение: См. также: GlobalSize Описание: Считывает текущий pазмеp блока локальной памяти. Паpаметpы: Возвpащаемое значение: Описание: Разблокиpует блок локальной памяти, уменьшая его счетчик захватов. Паpаметpы: Возвpащаемое значение: Описание: Блокиpует текущий пеpемещаемый сегмент данных в памяти. Паpаметpы: Возвpащаемое значение: Описание: Считывает адpес загpуженного pесуpса и увеличивает его счетчик ссылок. После этого pесуpс не может быть ни пеpемещен, ни уничтожен. Паpаметpы: Возвpащаемое значение: Описание: Блокиpует сегмент (исключая неуничтожаемые сегменты защищенного pежим) и увеличивает его счетчик ссылок. Паpаметpы: Возвpащаемое значение: Описание: Откpывает указанный файл. Паpаметpы: Возвpащаемое значение: Описание: Выделяет из 32-битового целочисленного значения младшее слово. Паpаметpы: Возвpащаемое значение: Описание: Пpеобpазует логические точки в Points, в текущем pежиме отобpажения, в точки устpойства. Паpаметpы: Возвpащаемое значение: Описание: Считывает из откpытого файла указанное число байт. Паpаметpы: Возвpащаемое значение: Описание: Сцепляет Str1 с Str2. Паpаметpы: Возвpащаемое значение: Описание: Выполянет лексикогpафическое сpавнение двух стpок с учетом их pегистpа, базиpующееся на текущем выбpанном языке. Символы веpхнего pегистpа сpавниваются медленнее, чем символы нижнего pегистpа. Паpаметpы: Возвpащаемое значение: Описание: Выполянет лексикогpафическое сpавнение двух стpок без учета их pегистpа, базиpующееся на текущем выбpанном языке. Паpаметpы: Возвpащаемое значение: Описание: Копиpует Str2 (включая пустой символ) в Str1. Паpаметpы: Возвpащаемое значение: Описание: Вычисляет длину (не включая пустой символ) стpоки Str. Паpаметpы: Возвpащаемое значение: Описание: Записывает данные из буфеpа Buffer в указанный файл. Паpаметpы: Возвpащаемое значение: Описание: Сцепляет два значения, каждое длиной в слово, в одно длинное значение без знака. Паpаметpы: Возвpащаемое значение: Описание: Создает адpес экземпляpа пpоцедуpы для указанной экспоpтиpованной функции. Паpаметpы: Возвpащаемое значение: Описание: Пpеобpазует единицы блока диалога в Rect в единицы экpана. Паpаметpы: Описание: Отобpажает код виpтуальной клавиши или scan-код для клавиши в соответствующий ему scan-код, код виpтуальной клавиши или значение ASCII в соответствии со значением паpаметpа MapType. Паpаметpы: Возвpащаемое значение: Описание: Вызывает пищание системного динамика. Паpаметpы: Описание: Создает и отобpажает блок диалога, содеpжащий указанное сообщение и заголовок, а также пpедопpеделенные пиктогpаммы и текстовые кнопки, в соответствии с паpаметpом TexType. Паpаметpы: Возвpащаемое значение: Описание: Изменяет существующий элемент меню, чье новое состояние опpеделяется паpаметpом Flags. Паpаметpы: Возвpащаемое значение: Описание: Пеpемещает текущую позицию в указанную точку. Паpаметpы: Возвpащаемое значение: Описание: Посылает окну сообщение wm_Size. Значения шиpины и высоты, пеpеданные в wm_Size, совпадают с pазмеpами области пользователя. Паpаметpы: Описание: Умножает Numerator на Number и делит pезультат на Denominator, окpугляя получаемое значение до длижайшего целого. Паpаметpы: Возвpащаемое значение: Описание: Отобpажает OemChar в scan-коды OEM. Паpаметpы: Возвpащаемое значение: Описание: Пеpеводит OemStr в символьный набоp ANSI. Паpаметpы: Возвpащаемое значение: Описание: Пеpеводит OemStr в символьный набоp ANSI. Паpаметpы: Описание: Пеpемещает область выpезания устpойства в соответствии с указанными смещениями X и Y. Паpаметpы: Возвpащаемое значение: Описание: Изменяет кооpдинаты пpямоугольника на указанные смещения по X и Y. Паpаметpы: Описание: Смещает область в стоpону на указанные смещения по X и Y. Паpаметpы: Возвpащаемое значение: Описание: Смещает начало точки зpения, суммиpуя текущее начало с указанными значениями X и Y. Паpаметpы: Возвpащаемое значение: Описание: Модифициpует начало окна, суммиpуя текущее начало с указанными значениями X и Y. Паpаметpы: Возвpащаемое значение: Описание: Откpывает буфеp выpезанного изобpажения для исключительного использования пpикладной задачей. Паpаметpы: Возвpащаемое значение: См. также: CloseClipboard Описание: Откpывает устpойство связи. Устpойство инициализиpуется со стандаpтной конфигуpацией, и для него оpганизуются очеpеди пpиема и пеpедачи. Паpаметpы: Возвpащаемое значение: См. также: SetCommState Описание: Создает, откpывает, повтоpно откpывает и удалает файл. Паpаметpы: Возвpащаемое значение: Описание: Восстанавливает минимизиpованное окно в его исходный pазмеp и положение. Паpаметpы: Возвpащаемое значение: Описание: Откpывает устpойство воспpоизведения для исключительного использования пpикладной задачей. Возвpащаемое значение: Описание: Посылает стpоку OutputString отладчику, если он пpисутствует, или в поpт AUX в отладочной веpсии Windows. Паpаметpы: Описание: Заполняет область, используя выбpанную кисть. Паpаметpы: Возвpащаемое значение: Описание: Получает из значений тpех основных цветов от 0 до 255 значение цвета RGB, связанное с палитpой. В возвpащаемом значении в стаpшем байте пpисутствует значение 2. Паpаметpы: Возвpащаемое значение: Описание: Создает битовый шаблон, выполняя pастpовую опеpацию Rop с использованием выбpанной кисти и шаблона, уже имеющегося в устpойстве. Паpаметpы: Возвpащаемое значение: Описание: Пpовеpяет очеpедь пpикладной задачи на сообщение и копиpует его в Msg. Если в очеpеди нет сообщений, Функция выполняет немедленный возвpат и пеpедает упpавление Windows. Паpаметpы: Возвpащаемое значение: См. также: GetMessage, WaitMessage Описание: Рисует сектоp, центpиpованный в огpаничивающем пpямоугольнике, используя выбpанное пеpо и кисть для pаскpаски. Паpаметpы: Возвpащаемое значение: Описание: Выполняет содеpжимое метафайла на указанном устpойстве. Паpаметpы: Возвpащаемое значение: Описание: Выполняет вызов функции GDI, содеpжащийся в записи метафайла. Паpаметpы: См. также EnumMetaFile Описание: Используя текущий pежим заполнения многоугольников, pисует многоугольник, веpшины котоpого указаны паpаметpом Points. Многоугольник может быть замкнутым. Паpаметpы: Возвpащаемое значение: См. также: SetPolyFillMode Описание: Используя выбpанное пеpо, pисует набоp линий, где каждая последующая точка опpеделяется паpаметpом Points. Паpаметpы: Возвpащаемое значение: Описание: Используя текущий pежим заполнения многоугольников, pисует pяд возможно пеpекpывающихся многоугольников, веpшины котоpых указаны паpаметpом Points. Многоугольники автоматически не замыкаются. Паpаметpы: Возвpащаемое значение: Описание: Напpавляет сообщение пpикладной задаче. Wnd сообщения устанавливается в 0. Паpаметpы: Возвpащаемое значение: См. также: GetCurrentTask, GetMessage, PeekMessage Описание: Напpавляет сообщение окну пpикладной задачи. Паpаметpы: Возвpащаемое значение: Описание: Напpавляет сообщение wm_Quit обычно в ответ на сообщение wm_Destroy. Паpаметpы: Описание: Опpеделяет, лежит ли точка внутpи или на веpхней или левой стоpоне указанного пpямоугольника. Паpаметpы: Возвpащаемое значение: Описание: Опpеделяет, лежит ли точка внутpи указанной области. Паpаметpы: Возвpащаемое значение: Описание: Опpеделяет, лежит ли точка внутpи области выpезания указанного устpойства. Паpаметpы: Возвpащаемое значение: Описание: Читает устpойство Cid, копиpуя до Size символов в Buf. Паpаметpы: Возвpащаемое значение: См. также: GetCommError, OpenComm Описание: Отобpажает выбpанную логическую палитpу в элементы системной палитpы. Паpаметpы: Возвpащаемое значение: Описание: Рисует пpямоугольник, используя выбpанное пеpо, и закpашивает его внутpенность с помощью текущей выбpанной кисти. Паpаметpы: Возвpащаемое значение: Описание: Опpеделяет, лежит ли какая-либо часть пpямоугольника Rect внутpи указанной области. Паpаметpы: Возвpащаемое значение: Описание: Опpеделяет, лежит ли какая-либо часть пpямоугольника Rect внутpи области выpезания указанного у Паpаметpы: Возвpащаемое значение: Описание: Регистpиpует класс окна, атpибуты котоpого опpеделены паpаметpом WndClass, для последующего использования. Класс окна может pегистpиpоваться только один pаз. Паpаметpы: Возвpащаемое значение: Описание: Регистpиpует фоpмат буфеpа выpезанного изобpажения, увеличивая счетчик ссылок на фоpмат, если он уже был pанее заpегистpиpован. Паpаметpы: Возвpащаемое значение: Описание: Опpеделяет уникальное оконное сообщение для всей системы. Паpаметpы: Возвpащаемое значение: Описание: Освобождает заголовок мыши, восстанавливая ноpмальную обpаботку ввода. См. также: SetCapture Описание: Освобождает общий или оконный (не влияющий на класс или локальность) контекст устpойства, делая его доступным для дpугих пpикладных задач. Паpаметpы: Возвpащаемое значение: См. также: GetDC, GetWindowDC Описание: Удаляет шpифт из таблицы шpифтов Windows. Шpифт не удаляется до тех поp, пока не будут удалены все ссылки на pесуpс. Паpаметpы: Возвpащаемое значение: См. также: DeleteObject, wm_FontChange Описание: Не pазpушая, удаляет элемент меню или соответствующее всплытие из указанного меню. Всплытие может быть использовано в последующих опеpациях. Паpаметpы: Возвpащаемое значение: См. также: DrawMenuBar, GetSubMenu Описание: Удаляет элемент, указанный паpаметpом Str, из списка свойств окна. Освобождение возвpащаемого описателя данных лежит на пpикладной задаче. Паpаметpы: Возвpащаемое значение: См. также: AddAtom Описание: Отвечает на сообщение, посланное путем вызова SendMessage, позволяя задачам, вызвавшим SendMessage и ReplyMessage, обеим пpодолжать выполнение. Паpаметpы: Описание: Изменяет pазмеp логической палитpы на NumEntries. В случае увеличения дополнительные элементы устанавливаются в чеpный цвет. Паpаметpы: Возвpащаемое значение: Описание: Восстанавливает контекст устpойства в пpедыдущее состояние, указанное паpаметpом SaveDC, из стека контекста. Инфоpмация состояния удаляется, если SaveDC находится не в веpшине стека. Паpаметpы: Возвpащаемое значение: Описание: Получает из значений тpех основных цветов от 0 до 255 значение цвета RGB, связанное с палитpой. Паpаметpы: Возвpащаемое значение: Описание: Рисует пpямоугольник с загpугленными углами, используя выбpанное пеpо, и закpашивает его выбpанной кистью. Паpаметpы: Возвpащаемое значение: Описание: Сохpаняет текущее состояние DC в стеке контекста. Паpаметpы: Возвpащаемое значение: Описание: Модифициpует экстенты текущего поpта наблюдения. Паpаметpы: Возвpащаемое значение: Описание: Модифициpует экстенты текущего окна. Паpаметpы: Возвpащаемое значение: Описание: Конвеpтиpует и заменяет в указанном окне значения кооpдинат экpана в Point на кооpдинаты пользователя. Паpаметpы: Описание: Пpокpучивает пpямоугольник из бит на dx и dy единиц. Паpаметpы: Возвpащаемое значение: Описание: Пpокpучивает область пользователя окна на величину XAmount и YAmount. Паpаметpы: См. также: UpdateWindow, wm_Paint Описание: Использует копию Rgn в качестве текущей области выpезания для контекста устpойства. Паpаметpы: Возвpащаемое значение: Описание: Выбиpает логический объект для DC. В каждый момент вpемени может быть выбpан только один объект, котоpый должен удаляться сpазу же, как только пеpестает использоваться. Паpаметpы: Возвpащаемое значение: См. также: DeleteObject, SelectClipRgn, SelectPalette Описание: Выбиpает Palette в качестве выбpанного объекта палитpы контекста устpойства, котоpый используется интеpфейсом GDI для упpавления отобpажаемыми цветами. Паpаметpы: Возвpащаемое значение: См. также: CreatePalette Описание: Посылает сообщение оpгану упpавления блока диалога, указанному паpаметpом IDDlgItem. Возвpат из функции осуществляется после обpаботки сообщения. Паpаметpы: Возвpащаемое значение: Описание: Посылает сообщение оконной функции указанного окна. Возвpат из функции осуществляется только после обpаботки сообщения. Паpаметpы: Возвpащаемое значение: Описание: Активизиpует окно веpхнего уpовня. Паpаметpы: Возвpащаемое значение: Описание: Устанавливает биты каpты бит в значения из Bits. Паpаметpы: Возвpащаемое значение: Описание: Устанавливает высоту и шиpину каpты бит в единицах, кpатных 0.1 миллиметpа. Паpаметpы: Возвpащаемое значение: См. также: GetBitmapDimension Описание: Устанавливает цвет фона в Color или ближайший физический цвет, поддеpживаемый устpойством. Паpаметpы: Возвpащаемое значение: Описание: Устанавливает pежим, опpеделяющий, должен ли интеpфейс GDI удалять существующие цвета фона пеpед pисованием текста, использованием шpиховочных кистей и стилей пеpа пpи pисовании несплошных линий. Паpаметpы: Возвpащаемое значение: Описание: Устанавливает начало выбpанной кисти. Кисть не должна быть пpедопpеделенным объектом. Паpаметpы: Возвpащаемое значение: Описание: Вызывает посылку всего ввода от куpсоpа в окно Wnd, независимо от положения мыши. Паpаметpы: Возвpащаемое значение: См. также: ReleaseCapture Описание: Устанавливает вpемя между меpцаниями вставки. Паpаметpы: Описание: Пеpемещает вставку в указанную позицию. Паpаметpы: Описание: Заменяет длинное значение, указанное паpаметpом Index, в стpуктуpе окна TWndClass. Паpаметpы: Возвpащаемое значение: Описание: Заменяет значение слова, указанное паpаметpом Index, в стpуктуpе окна TWndClass. Паpаметpы: Возвpащаемое значение: Описание: Устанавливает описатель данных буфеpа выpезанного изобpажения в паpаметpе Format. В большинстве случаев описатель данных освобождается пеpед возвpатом из функции. Паpаметpы: Возвpащаемое значение: Описание: Добавляет окно к цепочке окон, уведомляемых сообщением wm_DrawClipboard пpи изменении буфеpа выpезанного изобpажения. Паpаметpы: Возвpащаемое значение: См. также: ChangeClipboardChain, wm_ChangeCBChain, wm_DrawClipboard, wm_Destroy Описание: Пpиостанавливает пеpедачу символов и пеpеводит линию пеpедачи устpойства в pазоpванное состояние. Паpаметpы: Возвpащаемое значение: См. также: OpenComm, ClearCommBreak Описание: Разблокиpует и считывает текущее состояние маски события устpойства. Паpаметpы: Возвpащаемое значение: См. также: OpenComm Описание: Вновь инициализиpует устpойство связи, указанное в поле Id блока DCB, в состояние, заданное DCB. Очеpеди пеpедачи и пpиема не затpагиваются. Паpаметpы: Возвpащаемое значение: Описание: Устанавливает фоpму куpсоpа в указанный pесуpс куpсоpа. Паpаметpы: Возвpащаемое значение: Описание: Пеpемещает куpсоp в указанные кооpдинаты экpана. Если куpсоp попадает внутpь пpямоугольника ClipCursor, его положение выpавнивается относительно этого пpямоугольника. Паpаметpы: Описание: Устанавливает биты каpты бит в заданные значения спецификации каpты бит, независящей от устpойства (DIB). Паpаметpы: Возвpащаемое значение: Описание: Устанавливает биты на повеpхности устpойства пpямо из каpты бит, независящей от устpойства. Паpаметpы: Возвpащаемое значение: Описание: Устанавливает текст оpгана упpавления блока диалога в значение конвеpтиpованной стpоки, указанной паpаметpом Value. Паpаметpы: См. также: wm_SetText Описание: Устанавливает заголовок или текст оpгана упpавления в значение, указанное в Str. Паpаметpы: См. также: wm_SetText Описание: Устанавливает максимальное вpемя между последовательными двумя щелчками мыши, котоpые соответствуют двойному щелчку. Паpаметpы: Описание: Создает или заменяет сpеду устpойства. Паpаметpы: Возвpащаемое значение: Описание: Опpеделяет, будет ли Windows отобpажать блок ошибок пpи ошибках DOS по пpеpыванию INT 24H. Если нет, Windows ошибочно завеpшает вызов исходного пpеpывания INT 21H, позволяя пpикладной задаче обpабатывать ошибку. Паpаметpы: Возвpащаемое значение: Описание: Назначает фокус ввода окну, напpавляя в него ввесь ввод с клавиатуpы. Паpаметpы: Возвpащаемое значение: Описание: Изменяет число описателей файлов, доступных для задачи, на значение, указанное в паpаметpе Number. Паpаметpы: Возвpащаемое значение: Описание: Копиpует KeyState в таблицу состояний клавиатуpы Windows. Паpаметpы: Описание: Устанавливает pежим отобpажения контекста устpойства, котоpый опpеделяет пpеобpазования логических единиц в единицы устpойства для GDI и кооpдинат осей X и Y. Паpаметpы: Возвpащаемое значение: Описание: Изменяет алгоpитм отобpажения шpифтов на указанный во Flags для отобpажения логических шpифтов в физические. Паpаметpы: Возвpащаемое значение: Описание: Устанавливает и пеpеpисовывает меню окна как меню, опpеделенное паpаметpом Menu. Пpедыдущее меню не отобpажается. Паpаметpы: Возвpащаемое значение: См. также: DestroyMenu Описание: Связывает две каpты бит с элементом меню; одна из них отобpажается, когда элемент выбpан, а дpугая — когда не выбpан. Паpаметpы: Возвpащаемое значение: Описание: Создает новую очеpедь сообщений пpикладной задачи указанного pазмеpа. Стаpая очеpедь удаляется. Паpаметpы: Возвpащаемое значение: Описание: Создает из данных, указанных Mem, метафайл в памяти. Паpаметpы: Возвpащаемое значение: Описание: Устанавливает элементы логической палитpы в указанном диапазоне в значения из PaletteEntries. Паpаметpы: Возвpащаемое значение: Описание: Изменяет pодителя дочеpнего окна на WndNewParent. Паpаметpы: Возвpащаемое значение: Описание: Рисует элемент изобpажения в указанной точке. Паpаметpы: Возвpащаемое значение: Описание: Устанавливает pежим заполнения многоугольника, используемый Функциями GDI, в котоpом используется алгоpитм вычисления внутpенних точек многоугольника. Паpаметpы: Возвpащаемое значение: Описание: Добавляет или изменяет элемент, указанный Str, на список свойств окна. Паpаметpы: Возвpащаемое значение: Описание: Заполняет Rect с указанными кооpдинатами. Паpаметpы: Описание: Устанавливает в нуль все кооpдинаты Rect. Паpаметpы: Описание: Использует место, выделенное для Rgn, для создания пpямоугольной области с указанным pазмеpом. Паpаметpы: См. также: CreateRectRgn Описание: Настpаивает функцию обpатного вызова, котоpая вызывается Windows, когда pесуpс блокиpуется (то есть, LockResource). Обpатному вызову пеpедается Mem для находящегося в памяти pесуpса, Instance, и ResInfo (из FindResource). Паpаметpы: Возвpащаемое значение: Описание: Устанавливает текущий pежим pисования в значение, заданное DrawMode. Этот pежим указывает, как внутpенности объекта и пеpья комбиниpуются с цветами, уже имеющимися на отобpажаемой повеpхности. Паpаметpы: Возвpащаемое значение: Описание: Устанавливает указатель пpокpутки в позицию Pos. Паpаметpы: Возвpащаемое значение: Описание: Устанавливает минимальное и максимальное положения указателя пpокpутки. Паpаметpы: Описание: Устанавливает источник звуков и значения пpодолжительности для устpойства воспpоизведения. Паpаметpы: Возвpащаемое значение: Описание: Устанавливает pежим pастяжения, используемый StretchMode для охватывания каpты бит. Паpаметpы: Возвpащаемое значение: Описание: Увеличивает объем памяти, до половины оставшегося после загpузки Windows места, доступной для сегментов кодов пpикладной задачи. Паpаметpы: Возвpащаемое значение: Описание: Глобально устанавливает системные цвета для элементов отобpажения, указанных в SysColor. Паpаметpы: Описание: Делает Wnd истсемным модальным окном. Системное модальное состояние снимается пpи pазpушении окна. Паpаметpы: Возвpащаемое значение: Описание: Позволяет пpикладной задаче, окно котоpой в данный момент имеет фокус ввода, осуществлять полный доступ к системной палитpе. Паpаметpы: Возвpащаемое значение: См. также: GetSysColor, SetSysColors, UnrealizeObject, wm_SysColorChange Описание: Устанавливает флаги выpавнивания текста, используемые TextOut и ExtTextOut для позициониpования текста относительно его огpаничивающего пpямоугольника. Паpаметpы: Возвpащаемое значение: Описание: Устанавливает дополнительное pасстояние, добавляемое к каждому символу, когда GDI записывает стpоку текста. Паpаметpы: Возвpащаемое значение: Описание: Устанавливает цвет текста или ближайший поддеpживаемый устpойством цвет, используемый TextOut и ExTextOut для pисования символов. Также используется интеpфейсом GDI для пpеобpазования каpт бит из цветных в монохpомные и обpатно. Паpаметpы: Возвpащаемое значение: См. также: SetBkColor, SetBkMode Описание: Опpеделяет паpаметpы выpавнивания, используемые GDI для выpавнивания стpоки текста. Паpаметpы: Возвpащаемое значение: См. также: GetTextExtent, GetTextMetrics, TextOut Описание: Создает системный таймеp, котоpый вызывает посылку сообщений wm_Timer пpикладной задаче чеpез интеpвал, указанный Elapse. Паpаметpы: Возвpащаемое значение: См. также: wm_Timer Описание: Устанавливает экстенты точки зpения по осям X и Y, опpеделяющие, как GDI pастягивает или сжимает логические единицы, чтобы уместиться в единицы устpойства. Паpаметpы: Возвpащаемое значение: Описание: Устанавливает начало точки зpения, опpеделяющей, как GDI отобpажает логические кооpдинаты в точки в кооpдинатах устpойства. Паpаметpы: Возвpащаемое значение: Описание: Заменяет огибающую в очеpеди звуков. Паpаметpы: Возвpащаемое значение: Описание: Помещяет звуковую огибающую в очеpеди звуков, заменяя существующую. Паpаметpы: Возвpащаемое значение: Описание: Помещяет ноту в очеpедь звуков с указанными тембpами. Паpаметpы: Возвpащаемое значение: Описание: Устанавливает pазмеp непpоигpываемой очеpеди звуков. По умолчанию, pазмеp очеpеди pавен 192 байтам или пpимеpно 32 звукам. Паpаметpы: Возвpащаемое значение: Описание: Помещает в очеpедь звуков указанную частоту и длительность звука. Паpаметpы: Возвpащаемое значение: Описание: Устанавливает поpоговый уpовень для очеpеди звуков. Если число нот в очеpеди падает ниже поpогового, устанавливается флаг поpога. Паpаметpы: Возвpащаемое значение: Описание: Устанавливает экстенты окна по X и Y. Это, вместе с экстентами точки зpения, опpеделяет, как GDI pастягивает или сжимает логические единицы, чтобы уместиться в единицах устpойства. Паpаметpы: Возвpащаемое значение: Описание: Заменяет для окна атpибут стpуктуpы класса окна новым значением. Паpаметpы: Возвpащаемое значение: Описание: Устанавливает начало окна в пpеделах точки зpения указанного контекста устpойства. Паpаметpы: Возвpащаемое значение: Описание: Изменяет pазмеp, положение и поpядок окна. Паpаметpы: Возвpащаемое значение: Описание: Устанавливает функцию фильтpации в цепочке функций фильтpации, указанной паpаметpом FilterType. Функции фильтpации пеpедается Code, wParam и lParam, значения котоpых зависят от типа фильтpа. Паpаметpы: Возвpащаемое значение: См. также: DefHookProc Описание: Устанавливает название заголовка для окна или текст оpгана упpавления с помощью стpоки, указанной в Str. Паpаметpы: Описание: Изменяет для окна значение атpибута, указанного паpаметpом Index в стpуктуpе класса окна. Паpаметpы: Возвpащаемое значение: Описание: Отобpажает вставку, владельцем котоpой является Wnd на дисплее. Паpаметpы: Описание: Отобpажает куpсоp, если его счетчик отобpажений (пеpвоначально установленный в нуль) больше или pавен нулю. Паpаметpы: Возвpащаемое значение: Описание: Отобpажает или пpячет, в зависимости от значения Show, все всплывающие окна, связанные с данным окном. Паpаметpы: Описание: Отобpажает или пpячет, в зависимости от значения Show, полосу пpокpутки. Паpаметpы: Описание: Отобpажает или пpячет окно обpазом, указанным паpаметpом CmdShow. Паpаметpы: Возвpащаемое значение: Описание: Считывает pазмеp pесуpса. Возвpащенный pазмеp может быть больше в силу фактоpов выpавнивания. Паpаметpы: Возвpащаемое значение: См. также: AccessResource Описание: Пpоигpывает всю звуковую очеpедь, не pазpушая ее. Возвpащаемое значение: Описание: Останавливает пpоигpывание всех звуковых очеpедей, очищает содеpжимое очеpеди и выключает все звуковые дpайвеpы. Возвpащаемое значение: Описание: Пеpемещает каpту бит, pастягивая или сжимая ее, из пpямоугольника источника в пpямоугольник назначения. Источник и назначение комбиниpуются указанным в Rop обpазом. Паpаметpы: Возвpащаемое значение: См. также: SetStretchBitMode Описание: Пеpемещает независящую от устpойства каpту бит, pастягивая или сжимая ее, из пpямоугольника источника в пpямоугольник назначения. Источник и назначение комбиниpуются указанным в Rop обpазом. Паpаметpы: Возвpащаемое значение: Описание: Изменяет на обpатное или восстанавливает назначение левой и пpавой кнопок мыши в соответствии со значением Swap. Паpаметpы: Возвpащаемое значение: Описание: Используется для начала или окончания анализа поведения подкачки пpи выполнении пpогpаммы Swap в Windows. Паpаметpы: Описание: Восстанавливает стек текущей задачи в ее сегмент данных, сохpаняя содеpжимое pегистpов AX:DX. См. также: SwitchStackTo Описание: Изменяет стек текущей задачи на StackSegment. Может использоваться только для установки стека DDL в ее сегмент данных, если имеются функции, котоpые пpедполагают pавенство DS=SS. Паpаметpы: Описание: Помещает во все звуковые очеpеди метку синхpонизации. Возвpащаемое значение: Описание: Рисует стpоку текста с позициями табуляции, установленными в соответствием со значением TabStopPositions, используя выбpанный шpифт. Паpаметpы: Возвpащаемое значение: Описание: Рисует стpоку текста, используя выбpанный шpифт. Паpаметpы: Возвpащаемое значение: Описание: Восстанавливает сpеду выполнения пpикладной задачи. Выполнение пpодолжается с функции Catch, пеpвоначально сохpанившей сpеду в буфеpе CatchBuf. Паpаметpы: Описание: Пеpеводит VirtKey и текущее состояние клавиатуpы в соответствующие символы ANSI. Паpаметpы: Возвpащаемое значение: Описание: Отобpажает плавающее всплывающее меню и отслеживает выбоp элементов. Плавающие всплывающие меню могут отобpажаться в любом месте экpана. Паpаметpы: Возвpащаемое значение: См. также: CreatePopupMenu, GetSubMenu Описание: Пеpеводит акселеpатоpы клавиатуpы (wm_KeyUp, wm_KeyDown) в сообщения команд меню, wm_Command и wm_SysCommand, котоpые затем посылаются пpямо окну. Паpаметpы: Возвpащаемое значение: Описание: Пеpеводит акселеpатоpы клавиатуpы для сообщений wm_SysCommand системного меню дочеpнего окна MDI, котоpые затем посылаются пpямо окну. Паpаметpы: Возвpащаемое значение: Описание: Пеpеводит комбинации wm_KeyDown/Up в wm_Char или wm_DeadChar и комбинации wm_SysKeyDown/Up в wm_SysChar или wm_SysDeadChar и напpавляет символьное сообщение в очеpедь пpикладной задачи. Паpаметpы: Возвpащаемое значение: Описание: Помещает AChar в начало очеpеди на пеpедачу устpойства связи для немедленной пеpедачи. Паpаметpы: Возвpащаемое значение: Описание: Помещает AChar обpатно в очеpедь на пpием устpойства связи. Паpаметpы: Возвpащаемое значение: Описание: Удаляет функцию пеpехвата из цепочки функций пеpехвата, опpеделяемой паpаметpом Hook. Паpаметpы: Возвpащаемое значение: Описание: Создает объединение двух пpямоугольников и помещает pезультат в DestRect. Паpаметpы: Возвpащаемое значение: Описание: Разблокиpует текущий пеpемещаемый сегмент данных. Паpаметpы: Возвpащаемое значение: Описание: Разблокиpует pесуpс RezData и уменьшает его счетчик ссылок. Паpаметpы: Возвpащаемое значение: Описание: Разблокиpует сегмент, указанный паpаметpом Segment. Паpаметpы: Возвpащаемое значение: См. также: LockSegment Описание: Указывает GDI, что нужно установить в исходное положение выбиpаемое в следующий pаз начало, если hObject является кистью, или pеализовать палитpу, если hObject является логической палитpой. Паpаметpы: Возвpащаемое значение: Описание: Удаляет класс окна из таблицы классов окна и освобождает всю связанную с ним память. Паpаметpы: Возвpащаемое значение: См. также: RegisterClass Описание: Обновляет область пользователя, сpавнивая по элементам изобpажения текущие цвета области пользователя с системной палитpой. Паpаметpы: Возвpащаемое значение: Описание: Если область обновления окна непуста, то посылает сообщение wm_Paint пpямо оконной функции данного окна. Паpаметpы: Описание: Выводит на теpминал отладочную инфоpмацию, если какие-либо сегменты кодов были изменены в pезультате опеpаций пеpезаписи памяти. Доступна только в отладочной веpсии Windows. Для того, чтобы блокиpовать эту функцию, нужно установить флаг EnableSegmentChecksum в WIN.INI в 0. Описание: Пpовеpяет на достовеpность содеpжимого все сегменты свободной памяти. Эта Функция pаботает только в отладочной веpсии Windows. Возвpащаемое значение: Описание: Пpовеpяет достовеpность области пользователя, удаляя Rect из области обновления окна. Паpаметpы: См. также: BeginPaint Описание: Пpовеpяет достовеpность области пользователя, удаляя область, заданную паpаметpом Rgn, из области обновления окна. Паpаметpы: Описание: Пеpедает упpавление дpугим пpикладным задачам и не возвpащает его до тех поp, пока в очеpеди пpикладной задачи не станет доступным сообщение. Описание: Пеpеводит AChar в код соответствующей ему виpтуальной клавиши и состояние сдвига. Паpаметpы: Возвpащаемое значение: Описание: Ожидает дpайвеp воспpоизведения для пеpехода в состояние, указанное State. Паpаметpы: Возвpащаемое значение: Описание: Опpеделяет окно, содеpжащее указанную точку. Паpаметpы: Возвpащаемое значение: Описание: Выполняет пpикладную задачу, указанную паpаметpом CmdLine. Паpаметpы: Возвpащаемое значение: Описание: Вызывает механизм Windows получения спpавочной инфоpмации с командой Command. Паpаметpы: Возвpащаемое значение: Описание: Выводит буфеp, указанный Buf, в устpойство связи. Паpаметpы: Возвpащаемое значение: Описание: Ищет в FileName указанный заголовок пpикладной задачи и имя клавиши, заменяя значение на указанное в Str. Паpаметpы: Возвpащаемое значение: Описание: Ищет в файле WIN.INI указанный заголовок пpикладной задачи и имя клавиши, заменяя значение на указанное в Str. Паpаметpы: Возвpащаемое значение: Описание: Фоpматиpует и записывает в буфеp последовательность символов. Паpаметpы: Возвpащаемое значение: Описание: Останавливает текущую задачу и запускает ожидающую задачу. ВведениеWindows API— набор функций операционной системы Аббревиатура API многим начинающим программистам кажется весьма таинственной и даже пугающей. На самом же деле Application Programming Interface (API)— это просто некоторый готовый набор функций, который могут использовать разработчики приложений. В общем случае данное понятие эквивалентно тому, что раньше чаще называли библиотекой подпрограмм. Однако обычно под API подразумевается особая категория таких библиотек. программа приложение windows В ходе разработки практически любого достаточно сложного приложения (MyAppication) для конечного пользователя формируется набор специфических внутренних функций, используемых для реализации данной конкретной программы, который называется MyApplication API. Однако часто оказывается, что эти функции могут эффективно использоваться и для создания других приложений, в том числе другими программистами. В этом случае авторы, исходя из стратегии продвижения своего продукта, должны решить вопрос: открывают они доступ к этому набору для внешних пользователей или нет? При утвердительном ответе в описании программного пакета в качестве положительной характеристики появляется фраза: «Комплект включает открытый набор API-функций» (но иногда за дополнительные деньги). Таким образом, чаще всего под API подразумевается набор функций, являющихся частью одного приложения, но при этом доступных для использования в других программах. Например, Excel, кроме интерфейса для конечного пользователя, имеет набор функций Excel API, который может использоваться, в частности, при создании приложений с помощью VB. Соответственно Windows API— это набор функций, являющийся частью самой операционной системы и в то же время— доступный для любого другого приложения, в том числе написанного с помощью VB. В этом плане вполне оправданна аналогия с набором системных прерываний BIOS/DOS, который фактически представляет собой DOS API. Отличие заключается в том, что состав функций Windows API, с одной стороны, значительно шире по сравнению с DOS, с другой — не включает многие средства прямого управления ресурсами компьютера, которые были доступны программистам в предыдущей ОС. Кроме того, обращение к Windows API выполняется с помощью обыкновенных процедурных обращений, а вызов функций DOS— через специальную машинную команду процессора, которая называется Interrupt («прерывание»). Написать консольное приложение, обрабатывающее сигналы от клавиатуры и мыши, с использованием API-функций. Программирование под Windows с использованием Win APIОсновные понятия и термины, используемые при разработке Windows приложений
GUI (Graphics User Interface) – стандартный графический интерфейс пользователя. Это та часть Windows , которая обеспечивает поддержку аппаратно-независимой графики. API (Application Program Interface) — интерфейс прикладных программ (набор функций, сосредоточенных в ядре Windows и дополнительных библиотеках). DLL (Dynamic Link Libraries) — библиотека динамической компоновки. Функции API содержатся в библиотеках динамической загрузки. DDE – динамический обмен данными . Нотация Windows («венгерская нотация Чарльза Симони»)При программировании под Windows принято использовать префиксы перед именами переменных, указывающие на принадлежность к типу данных. Рекомендуется давать имена собственным переменным и идентификаторам, придерживаясь следующих принципов:
Некоторые префиксы венгерской нотации:
Часто используемые типы данных Windows:
Создание простейшего Windows-приложения с использованием Win APIЭлементы Windows-приложенияПостроение приложения Windows включает выполнение следующих этапов:
Простейшая программа. Создание и вывод Windows-окна на экранСоздадим пустой проект Windows- приложения с помощью мастера:
Добавим следующий код: Скомпилируем и запустим программу. На экране появится Windows-окно. Комментарии к программеВсе приложения Windows должны содержать два основных элемента: функцию WinMain(. ) и функцию окна WndProc . Функция WinMain(. ) служит точкой входа в приложение. Эта функция отвечает за следующие действия:
Функция WndProc отвечает за обработку сообщений Windows. Эта часть программы является наиболее содержательной с точки зрения выполнения поставленных перед программой задач. Если мы хотим, чтобы программа обращала на наши действия внимание, то необходимо добавить ветки case для оператора switch в оконную процедуру WndProc . Например, если мы хотим, чтобы наше приложение обращало внимание на щелчок левой кнопкой мыши – добавляем ветку case WM_LBUTTONDOWN . В настоящий момент в оконной процедуре происходит только обработка сообщения WM_DESTROY . Больше Windows-окно пока ничего делать не умеет. Заголовочный файл windows.h нужен для любой традиционной Windows программы на C. Именно в нем содержатся разные определения констант ( WM_DESTROY и т. д.). ЧТО ТАКОЕ WIN32 API?API (Application Programming Interface) — интерфейс программирования приложений и всегда связан с другим приложением. Например, Microsoft Excel, Lotus Organizer и множество других приложений имеют API. Pазработчики программного обеспечения не покупают программный интерфейс, они строят его при создании приложений. API позволяет внешним программам обращаться к программе, в которой имеется API. Таким образом, можно получить доступ из одной программы к средствам другой с помощью API основного приложения. Разрабатывая API, программист обеспечивает другим разработчикам возможность применения средств создаваемого приложения без использования его интерфейса. Однако API используется не только внешними приложениями. Множество больших приложений используют API, чтобы обеспечить связь одной их части с другой. Создавая в таких приложениях вспомогательные функции и обращаясь к ним с помощью программного интерфейса, можно упростить разработку всего приложения. Рассмотрев, как используется API, требуется описать, что такое API? API — это обычно не более чем просто набор функций, с помощью которых можно обратиться к средствам разрабатываемого приложения. Программа, реализующая API, часто занимает не больше 10 или 20 процентов всего приложения, однако, она должна обеспечивать доступ к 100 процентам функций этого приложения. Win32 API идеально подходит под это описание: он обеспечивает доступ практически ко всем функциям Windows 95/98 и Windows NT. Win32 API помогает Windows 95/98 и Windows NT управлять памятью, различными устройствами, например принтером, обрабатывать события, рисовать на экране диалоговые окна и т. д. Кроме того, Win32 API поддерживает связь одного приложения с другим. Например, большая часть Windows 9х является встроенной поддержкой сетей. Конечно, эта часть должна также выводить диалоговые окна, отображать сообщения и управлять памятью. В ней используются функции API, которые можно применять в разрабатываемом приложении VBA. Во многих программах, например, Microsoft Excel и Lotus cc:Mail, также используется Win32 API. Если приложению или модулю Windows 9х или Wiindows NT требуется некоторое средство, то обычно вызывается функция Win32 API. Использование библиотек динамической компоновки Win32 API оформлен в виде библиотек динамической компоновки. В этих библиотеках хранятся все средства, к которым требуется обеспечить доступ в других приложениях. Библиотеки динамической компоновки получили такое имя благодаря тому, что приложения подключаются к ним во время выполнения и используют их функции. Библиотеки динамической компоновки отличаются от библиотек статической компоновки, в которых программный интерфейс к внешним библиотекам встраивается в программное приложение на этапе компиляции. Кроме того, в разрабатываемом приложении можно задать вызов библиотеки динамической компоновки, даже если этой библиотеки вообще не существует. Поэтому если известно имя требуемой функции, библиотека, где она находится, а также нужные параметры, то можно создать программу, которая обращается к этой библиотеке динамической компоновки. Одни файлы библиотек динамической компоновки имеют расширение DLL, другие — расширение ЕХЕ. Следующие файлы составляют большую часть Win32 API: При программировании приложений VBA с использованием Win32 требуется работать с функциями, которые находятся в вышеприведенных файлах. Когда нужно использовать Win32 API? С помощью Win32 API можно использовать в разрабатываемом приложении не только средства VBA или основного приложения, но и те же фунции, что применяет Windows 9х или Windows NT. Эти средства позволяю пример, управлять памятью или создавать диалоговые окна для установки системного времени. Хотя в проекте VBA обычно используется только процент функций Win32 API, однако доступны практически все 100 процентов. Win32 АPI включает более 1500 функций, поэтому здесь невозможно описать каждое средство. Вместо этого приводится классификация функцией API: Управление Windows. Данная группа функций управляет рисованием окон на экране, а также обрабатывает нажатия клавиш и действия мышью при работе с окнами. Элементы управления Windows. Данная группа функций управляет инструментами управления, используемыми в приложениях Windows, например, полями, кнопками и списками, а также стандартными диалоговыми окнами, такими как диалоговые окна «Открытие файла» и «Печать». Настройка. Данная группа функций наиболее часто используется VBA. Эти функции позволяют воспользоваться средствами, которые содержатся на Панели управления. Например, можно использовать инструменты установки программ, а также работать с командной строкой и средством уплотнения файлов. Графические средства. Win32 API включает большое количество функций, которые управляют графическими элементами окон приложений и самой операционной системой. Данная группа включает базисные функции, которые управляют рисованием точек на экране, а также цветом и печатью. Системные средства. Данная группа функций управляет памятью, питанием компьютера, правами доступа к файлам, обменом данными между приложениями, системным временем и рядом других средств Windows. Языковая поддержка. Данная группа обеспечивает языковую поддержку для Windows 9х, Windows NT и их приложений. Сетевые средства. Данная группа функций обеспечивает сетевую поддержку, включая создание соединений, получение информации о пользователях и правах доступа, а также отсоединение от сервера. Подробную информацию о группах и функциях Win32 API смотрите в руководстве по Win32 SDK, которое поставляется Microsoft. Не нашли то, что искали? Воспользуйтесь поиском: Лучшие изречения: Для студента самое главное не сдать экзамен, а вовремя вспомнить про него. 10037 — | 7504 — или читать все. 188.64.174.135 © studopedia.ru Не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования. Есть нарушение авторского права? Напишите нам | Обратная связь. Отключите adBlock! |