Курс основ программирования VB
Что такое текстовый браузер APIAPI
Тип данных объявления функции API и «безопасность типов»
постоянная структура
Кратко опишите некоторые наборы функций API: функции управления и сообщений, аппаратные и системные функции, функции меню, функции рисования.
Что такое API
Прежде всего необходимо рассказать всем, что такое API. Так называемый API изначально был написан для программистов C и C++. Проще говоря, API — это своего рода функция. Они включены в дополнительный файл библиотеки динамической компоновки под названием DLL. Согласно стандартному определению, API — это 32-битный интерфейс прикладного программирования Windows. Он представляет собой серию очень сложных функций, сообщений и структур. Он позволяет программистам использовать различные типы языков программирования для компиляции запускаемых программ. в приложениях Windows 95 и Windows NT в системе. Можно сказать, что если вы когда-либо изучали VC, API для вас не проблема. Но если вы не изучали VC или не знакомы со структурой Windows95, то можно сказать, что изучение API будет очень трудным делом.
Если вы откроете папку «SYSTEM» в WINDOWS, вы обнаружите множество дополнительных файлов с именем DLL. DLL содержит не одну API-функцию, а десятки или даже сотни. Сможем ли мы все овладеть этим? Ответ: нет: овладеть этим невозможно. Но на самом деле нам не нужно осваивать их все. Нам просто нужно сосредоточиться на освоении функций API, которые входят в состав самой системы Windos. Однако функции, дублирующие собственные функции VB, также следует отбросить. Например, ВБ
Команда etAttr может получать атрибуты файлов, а SetAttr — устанавливать атрибуты файлов. Также есть соответствующие функции для API
GetFileAttributes и SetFileAttributes имеют аналогичную производительность. После такого подсчета останется всего 500 или 600. Да, немало. Однако я осмелюсь вам сказать, что пока вы знакомо освоите 100 из них, ваш уровень программирования будет как минимум в два раза выше, чем сейчас. Хотя люди говорят, что VB и WINDOWS имеют тесную связь, я думаю, что API ближе.
ОКНА. Если вы изучите API, первым достижением станет понимание архитектуры WINDOWS. Это достижение не является легким.
Что бы произошло, если бы вы не полагались на API? Я могу вам сказать, что большинство из них представляют собой книги по продвинутому программированию (конечно, это не потому, что в названии книги написано «продвинутое», а в «Содержании» написано «продвинутое»). эта книга» в начале). Книги предназначены для читателей с определенной базой VB), и первые вопросы обычно начинаются с API. Поэтому можно сказать, что если вы не изучите API, вы, скорее всего, останетесь на младшем уровне и не сможете подняться выше. Единственный выход может быть попросить помощи у других: я умираю, приди и спаси меня, что мне делать с этим, что мне делать с этим. Тебя, конечно, раздражает сейчас в сети слишком много хороших людей? (в том числе и я, хе-хе) , но вы должны понимать, что с помощью этого метода вы не сможете производить хорошие произведения в своих руках. Это потому, что без этих знаний вы не сможете сформировать в уме общую концепцию дизайна.
Текстовый браузер API[возврат]
Многие функции API очень длинные. Хотите посмотреть, как это выглядит. Вот пример функции APIDdeClientTransaction:
DeclareFunctionDdeClientTransactionLib "user32" (pDataAsByte, ByValcbDataAsLong, ByValhConvAsLong, ByValhszItemAsLong, ByValwFmtAsLong, ByValwTypeAsLong, ByValdwTimeoutAsLong, pdwResultAsLong) AsLong
Ух ты! Так долго? Если вы никогда не сталкивались с API, я думаю, вы, должно быть, напуганы. Возможно, вы думаете о том, стоит ли вам продолжать обучение. Но не волнуйтесь, к счастью, дизайнеры Microsoft предоставляют нам полезные инструменты, это API.
Просмотрщик текста.
С помощью средства просмотра текста API мы можем легко найти объявления функций, типы структур и константы, необходимые программе, затем скопировать их в буфер обмена и, наконец, вставить в сегмент кода программы VB. В большинстве случаев, если мы определили три аспекта функций, структур и констант, необходимых программе, мы можем добавить их в сегмент программы с помощью вышеуказанных операций в текстовом браузере API, чтобы их можно было использовать в программе. . функция. Это самые основные вопросы здравого смысла для изучения API, и их гораздо меньше, чем огромный системный контент API. Куда мы будем тратить свою энергию в будущем (это ни в коем случае не трата) То есть:
Когда какую функцию использовать, когда какой тип структуры, когда какую константу использовать.
Объявление функции API
Давайте вспомним. Как объявить функцию в VB Думаю, если вы читаете эту статью, то точно сможете ответить на этот вопрос. Вот объявление функции, которое должно быть вам знакомо:
FunctionSetFocus(ByValhwndAsLong)AsLong
То есть эта строка кода определяет функцию с именем SetFocus. Эта функция имеет параметр типа данных Long и передается по значению (ByVal). После выполнения функции будут возвращены данные Long.
Объявление функций API также очень похоже. Например, функция SetFocus в API пишется так:
DeclareFunctionSetFocusLib"user32"Псевдоним"SetFocus"(ByValhwndAsLong)AsLong
Это немного сложнее. Да, это немного сложнее. Но я могу вам сказать, что, за исключением этих дополнительных частей, остальные части остаются такими же, как и то, что вы изучили раньше. То же самое касается вызовов функций в программах. нравиться:
ДимдлАсЛонг
dl&=SetFoucs(Form1.Hwnd)
Но ясно одно. Это не программа, которую вы пишете сами и в которой можно увидеть рабочий механизм, и не VB.
Как и встроенные функции, их использование можно узнать из онлайн-справки VB. Единственный способ — изучать и искать информацию, отличную от VB.
Оператор Declare используется для объявления ссылки на внешнюю процедуру в динамической библиотеке (DLL) на уровне модуля. Для этого вам просто нужно помнить, что любое объявление функции API должно содержать этот оператор.
Iib указывает библиотеку динамической компоновки или ресурс кода, содержащий объявленную процедуру или функцию. Другими словами, это объясняет вопрос о том, откуда взялась функция или процесс.
Как и в приведенном выше примере, SetFocusLib «user32» указывает, что функция SetFocus происходит из файла user32.dll. Основные файлы библиотеки динамической компоновки dll:
user32.dllУправление Windows. Создавайте пользовательский интерфейс приложения и управляйте им.
Интерфейс графического устройства GDI32.dll. Создание графического вывода для устройств Windows
Системная служба Kernel32.dll. Получите доступ к ресурсам компьютера операционной системы.
Обратите внимание: если файл DLL находится не в папке Windows или System, его источник должен быть указан в функции (
путь). Например, SetFocusLib "c:/Mydll/user32"
Псевдоним в объявлениях функций не является обязательным. Указывает, что вызываемая процедура имеет другое имя (псевдоним) в динамической библиотеке (DLL). Например, псевдоним «SetFocus» указывает, что другое имя функции SetFocus в User32.dll:
УстановитьФокус. Почему эти два имени одинаковы? Конечно, они могут быть и разными. Во многих случаях имя функции, описываемое псевдонимом, то есть последним символом псевдонима, часто является символом A. Например, другое имя функции SetWindowsText —
SetWindowsTextA, выраженный как псевдоним «SetWindowsTextA». Этот A — это всего лишь соглашение об именах, используемое разработчиками, указывающее, что функция принадлежит версии ANSI.
Итак, в чем же заключается использование псевдонимов? Теоретически псевдонимы предоставляют функциональные методы для вызова API с другим именем. Если вы укажете псевдоним, то, хотя мы вызываем функцию в соответствии с функцией после оператора Declare, псевдоним является первым выбором для фактического вызова функции. Например, следующие два объявления функции (Function, ABCD) являются допустимыми и вызывают одну и ту же функцию SetFocus:
DeclareFunctionSetFocusLib"user32""SetFocus"(ByValhwndAsLong)AsLong
ОбъявитьABCDSetFocusLib"user32"Alias"SetFocus"(ByValhwndAsLong)AsLong
Следует отметить, что при выборе псевдонима следует обращать внимание на регистр псевдонима. Если вы не выбираете псевдоним, имя функции должно учитывать регистр и не может быть изменено. Конечно, во многих случаях, поскольку объявление функции происходит непосредственно из API
Он копируется из текстового браузера, поэтому вероятность возникновения этой ошибки очень мала, но вам необходимо это знать.
И последнее напоминание: объявления API (включая структуры и константы) необходимо размещать в разделе «Общие объявления» формы или модуля.
Типы данных и «безопасность типов»
Типы данных, используемые в функциях API, в основном такие же, как и в VB. Но как функция API WIN32 Integer не существует.
Тип данных. Другой момент заключается в том, что тип данных Boolean нельзя увидеть в функциях API. Тип данных Variant отображается в форме Any в функциях API, например DataAsAny. Хотя подразумевается, что любой тип параметра может быть передан в качестве параметра этой функции API, у этого есть определенные недостатки. Причина в том, что это отключит все проверки типов целевых параметров. Это, естественно, создает возможности для ошибок при различных типах вызовов параметров.
Чтобы обеспечить строгую проверку типов и избежать упомянутых выше проблем, одним из способов является использование упомянутой выше технологии Alias в функции. Например, для функции API GetDIBits можно использовать другой метод объявления. Следующее:
Прототип функции GetDIBits:
PublicDeclareFunctionGetDIBitsLib"gdi32"Alias"GetDIBits"(ByValaHDCAsLong,ByValhBitmapAsLong,ByValnStartScanAsLong,ByValnNumScansAsLong,lpBitsAsAny,lpBIAsBITMAPINFO,ByValwUsageAsLong)AsLong
Модификация функции GetDIBits:
PublicDeclareFunctionGetDIBitsLongLib"gdi32"Alias"GetDIBits"(ByValaHDCAsLong,ByValhBitmapAsLong,ByValnStartScanAsLong,ByValnNumScansAsLong,lpBitsAsLong,lpBIAsBITMAPINFO,ByValwUsageAsLong)AsLong
Благодаря знаниям, полученным ранее в этом курсе, мы уже можем знать, будет ли прототип функции GetDIBits или модифицированная функция GetDIBitsLong фактически вызывать исходную функцию GetDIBits, указанную Alias. Но вы должны видеть, что разница между ними заключается в том, что в модифицированной функции мы заставляем параметр lpBits иметь значение Long. Это сведет к минимуму вероятность возникновения ошибок при вызове функций. Этот подход называется объявлением «безопасного типа».
Типы данных, которые часто встречаются в функциях API: Long, String, Byte, Any.... (Вот и все.)
постоянный
В константах API нет ничего особенного. Посмотрите следующий код в VB:
Msg=MsgBox("Привет",vbOKCancel)
Мы знаем, что значение константы vbOKCancel равно 1. Мы можем написать приведенный выше код следующим образом, не влияя на функцию кода:
Msg=MsgBox("Привет",1)
Но вы, возможно, не захотите выбрать последний вариант, поскольку он затруднит понимание кода. Этот подход также используется API. Просто API-константы должны быть инициализированы и объявлены до события, чего сам VB понять не может. Его содержимое по-прежнему поступает из API.
Текстовый браузер. Конкретная форма выглядит следующим образом:
PublicConstABM_ACTIVATE=&H6
PublicConstRIGHT_CTRL_PRESSED=&H4
PublicConstRPC_E_SERVER_DIED=&H80010007
PrivateConstRPC_S_CALL_FAILED_DNE=1727&
Некоторые программы при инициализации констант используют Global, например GlobalConstABM_ACTIVATE=&H6, но я думаю Public вполне может его заменить. Раньше я использовал Global, но сейчас не так часто. Если вы сейчас используете эту и ту, вы не сможете поддерживать согласованность между программами, или, по крайней мере, это будет выглядеть неуклюже.
структура[возврат]
Структура — это язык C и C++. Обычно в VB называются пользовательскими типами данных. Вероятно, многие друзья уже знают это. В области API я предпочитаю называть это структурой, поскольку различные типы структур API вообще не определены мной (
по индивидуальному заказу).
В VB структура API также определяется оператором TYPE....ENDTYPE. Например, в API структура точки определяется следующим образом:
Пабликтиппоинтапи
XAsLong' значение координаты точки по координате X (абсцисса)
YAsLong'Значение координаты точки по координате Y (ордината)
Конечный тип
Другой пример: определение прямоугольной структуры (Rect) в API выглядит следующим образом:
ПабликтипеRECT
LeftAsLong'X координата верхнего левого угла прямоугольника.
TopAsLong' координата Y верхнего левого угла прямоугольника.
RightAsLong'X координата нижнего правого угла прямоугольника.
BottomAsLong' координата Y нижнего правого угла прямоугольника.
Конечный тип
Этот контент также можно скопировать из текстового браузера API. Имена переменных в этих структурах могут быть изменены по желанию, не затрагивая саму структуру. Другими словами, все эти переменные-члены являются виртуальными. Например, структуру POINTAPI можно изменить на следующую:
Пабликтиппоинтапи
MyXAsLong'Значение координаты точки по координате X (абсцисса)
MyYAsLong'Значение координаты точки по координате Y (ордината)
Конечный тип
Однако, вообще говоря, в этом нет необходимости. Сама структура является типом данных. Поэтому при ее использовании вы должны объявить конкретную переменную структурного типа, прежде чем вы сможете фактически использовать структуру в программе. Метод объявления структуры такой же, как метод объявления других данных. Например, следующий оператор объявляет переменную MyPoint как тип структуры POINTAPI:
MyPointAsPOINTAPI
Ссылаться на переменные-члены в структуре также очень просто. Просто добавьте «.» после имени структуры, а затем напишите переменную-член, на которую будет сделана ссылка. Это очень похоже на ссылку на свойство объекта в VB. Например, если мы присвоим значение переменной X в объявленной выше структуре MyPoint переменной Temp&
Код выглядит следующим образом:
Темп&=MyPoint.X
Однако важно отметить, что вы не должны думать, что MyPoint в приведенном выше примере является значением. Это не значение, а адрес (
указатель). Ценность и адрес — совершенно разные понятия. Требования к структуре передаются посредством ссылки на функции WINDOWS, т. е. на все API.
В функциях структуры передаются через ByRef (ByRef — тип по умолчанию в операторе Declare). Для передачи структур не пытайтесь использовать ByVal, вы ничего не получите. Поскольку имя структуры на самом деле является указателем на структуру (первый адрес структуры), можно просто передать конкретное имя структуры (см. аннотацию, я использовал красный шрифт, чтобы выделить этот метод передачи).
Поскольку структура передает указатель, функция будет напрямую читать и записывать структуру. Эта возможность очень удобна для загрузки результатов выполнения функций в структуры.
Резюме[возврат]
Следующая процедура предназначена для обобщения того, что было изучено на этом уроке. Запустите VB, создайте новый проект, добавьте командную кнопку, скопируйте следующий код в сегмент кода и запустите его.
PrivateDeclareFunctionGetCursorPosLib"user32"(lpPointAsPOINTAPI)AsLong
PrivateTypePOINTAPI'определить структуру точки
XAsLong' значение координаты точки по координате X (абсцисса)
YAsLong'Значение координаты точки по координате Y (ордината)
Конечный тип
SubPrintCursorPos()
ДимдлАСЛонг
Диммипоинтаспоинтапи
dl&=GetCursorPos(MyPoint)'Вызовите функцию, чтобы получить координаты экранной мыши
Debug.Print"X="&Str(MyPoint.X)&"and"&"Y="&Str(MyPoint.Y)
EndSub
PrivateSubCommand1_Click()
ПечатьКурсорПос
EndSub
Результат вывода следующий (каждый запуск может давать разные результаты, что определяется положением указателя мыши на экране при вызове функции):
X=240иY=151
В программе функция GetCursorPos используется для получения положения указателя мыши на экране.
В приведенном выше примере вы можете обнаружить, что содержимое структуры MyPpint, переданной в качестве параметров, претерпело существенные изменения после вызова функции. Это связано с тем, что структура передается по ByRef.
Некоторые наборы функций API [возврат]
WindowsAPI
1. Органы управления и функции сообщений
AdjustWindowRect Учитывая стиль окна, вычислите размер окна, необходимый для получения прямоугольника целевой клиентской области.
AnyPopup определяет, есть ли на экране всплывающие окна.
ArrangeIconicWindows упорядочивает свернутые дочерние окна родительского окна.
Функция ввода потока подключения AttachThreadInput
BeginDeferWindowPos запускает процесс построения серии новых позиций окон.
BringWindowToTop переносит указанное окно в начало списка окон.
CascadeWindows упорядочивает окна каскадно.
ChildWindowFromPoint возвращает дескриптор первого дочернего окна родительского окна, содержащего указанную точку.
ClientToScreen определяет экранные координаты точки в окне, представленной координатами клиентской области.
CloseWindow сворачивает указанное окно
Копия содержимого прямоугольника CopyRect
DeferWindowPos Эта функция определяет новую позицию окна для определенного окна.
DestroyWindow очищает указанное окно и все его дочерние окна.
DrawAnimatedRects отображает серию динамических прямоугольников.
EnableWindow разрешает или отключает весь ввод с помощью мыши и клавиатуры в указанном окне.
EndDeferWindowPos одновременно обновляет позиции и состояние всех окон, указанных при вызове DeferWindowPos.
EnumChildWindows перечисляет дочерние окна для указанного родительского окна.
EnumThreadWindows перечисляет окна, относящиеся к указанной задаче.
EnumWindows перечисляет все родительские окна в списке окон.
EqualRect определяет, являются ли две прямоугольные структуры одинаковыми.
FindWindow находит первое окно верхнего уровня в списке окон, соответствующее указанным критериям.
FindWindowEx ищет первое подокно в списке окон, соответствующее указанным условиям.
FlashWindow мигает указанное окно
GetActiveWindow получает дескриптор активного окна.
GetCapture получает дескриптор окна, которое расположено в текущем потоке ввода и имеет захват мыши (оно получает активность мыши)
GetClassInfo получает копию структуры WNDCLASS (или структуры WNDCLASSEX), которая содержит информацию, относящуюся к указанному классу.
GetClassLong получает запись длинной переменной класса окна.
GetClassName получает имя класса для указанного окна.
GetClassWord получает целочисленную переменную для класса окна.
GetClientRect возвращает размер прямоугольника в клиентской области указанного окна
GetDesktopWindow получает дескриптор окна (окна рабочего стола), представляющий весь экран.
GetFocus получает дескриптор окна с фокусом ввода
GetForegroundWindow получает дескриптор главного окна.
GetLastActivePopup Получает дескриптор последнего активированного всплывающего окна в данном родительском окне.
GetLastError нацелен на ранее вызванную функцию API. Используйте эту функцию для получения расширенной информации об ошибках.
GetParent определяет родительское окно указанного окна
GetTopWindow ищет во внутреннем списке окон дескриптор первого окна, принадлежащего указанному окну.
GetUpdateRect получает прямоугольник, описывающий часть указанного окна, которую необходимо обновить.
GetWindow получает дескриптор окна, которое имеет определенную связь с исходным окном.
GetWindowContextHelpId получает идентификатор сцены справки, связанный с окном.
GetWindowLong получает информацию из структуры указанного окна
GetWindowPlacement получает информацию о состоянии и местоположении указанного окна.
GetWindowRect получает прямоугольник диапазона всего окна. Граница окна, строка заголовка, полоса прокрутки, меню и т. д. находятся внутри этого прямоугольника.
GetWindowText получает текст заголовка формы или содержимое элемента управления.
GetWindowTextLength исследует длину текста заголовка окна или содержимого элемента управления.
GetWindowWord получает информацию об указанной структуре окна.
InflateRect увеличивает или уменьшает размер прямоугольника.
Функция IntersectRect загружает прямоугольник в lpDestRect, который является пересечением двух прямоугольников: lpSrc1Rect и lpSrc2Rect.
InvalidateRect блокирует всю или часть клиентской области окна.
IsChild определяет, является ли окно дочерним или подчиненным окном другого окна.
IsIconic определяет, было ли окно свернуто
IsRectEmpty определяет, является ли прямоугольник пустым.
IsWindow определяет, действителен ли дескриптор окна.
IsWindowEnabled определяет, активно ли окно.
IsWindowUnicode определяет, является ли окно окном Unicode. Это означает, что окно получает литералы Юникода для всех текстовых сообщений.
IsWindowVisible определяет, видимо ли окно.
IsZoomed определяет, развернуто ли окно на максимум
LockWindowUpdate блокирует указанное окно и предотвращает его обновление.
MapWindowPoints преобразует точки в координатах клиентской области одного окна в систему координат клиентской области другого окна.
MoveWindow изменяет положение и размер указанного окна.
OffsetRect заставляет прямоугольник перемещаться, применяя указанное смещение.
OpenIcon восстанавливает свернутую программу и активирует ее
PtInRect определяет, находится ли указанная точка внутри прямоугольника.
RedrawWindow перерисовывает все окно или его часть.
ReleaseCapture освобождает захват мыши для текущего приложения.
ScreenToClient определяет координаты клиентской области указанной точки на экране.
ScrollWindow вся или часть клиентской области окна прокрутки
ScrollWindowEx прокручивает всю или часть клиентской области окна, в зависимости от дополнительных опций.
SetActiveWindow активирует указанное окно
SetCapture устанавливает захват мыши в указанное окно
SetClassLong устанавливает запись переменной Long для класса окна.
SetClassWord устанавливает запись для класса окна.
SetFocusAPI устанавливает фокус ввода на указанное окно. При необходимости окно активируется
SetForegroundWindow устанавливает окно в качестве главного окна системы.
SetParent указывает нового родителя окна
SetRect устанавливает содержимое указанного прямоугольника
SetRectEmpty устанавливает пустой прямоугольник.
SetWindowContextHelpId устанавливает идентификатор сцены справки (контекста) для указанного окна.
SetWindowLong устанавливает информацию для указанного окна в структуре окна.
SetWindowPlacement устанавливает статус и информацию о положении окна.
SetWindowPos определяет новую позицию и состояние окна.
SetWindowText устанавливает текст заголовка окна или содержимое элемента управления.
SetWindowWord устанавливает информацию для указанного окна в структуре окна.
ShowOwnedPopups Показывает или скрывает все всплывающие окна, принадлежащие указанному окну.
ShowWindow управляет видимостью окна.
ShowWindowAsync похож на ShowWindow.
SubtractRect загружает прямоугольник lprcDst, который является результатом вычитания lprcSrc2 из прямоугольника lprcSrc1.
TileWindows упорядочивает окна в порядке плитки.
UnionRect загружает целевой прямоугольник lpDestRect, который является результатом объединения lpSrc1Rect и lpSrc2Rect.
UpdateWindow вызывает немедленное обновление окна.
ValidateRect проверяет всю или часть клиентской области окна
WindowFromPoint возвращает дескриптор окна, содержащего указанную точку. Игнорировать замаскированные, скрытые и прозрачные окна.
2.Оборудование и системные функции
ActivateKeyboardLayout активирует новую раскладку клавиатуры. Раскладка клавиатуры определяет расположение и значение клавиш на физической клавиатуре.
Звуковой сигнал используется для создания простых звуков.
CharToOem преобразует строку из набора символов ANSI в набор символов OEM.
ClipCursor ограничивает указатель указанной областью
ConvertDefaultLocale преобразует специальный локальный идентификатор в реальный локальный идентификатор.
CreateCaret создает курсор (курсор) на основе указанной информации и выбирает его в качестве курсора по умолчанию для указанного окна.
DestroyCaret очищает (уничтожает) курсор
EnumCalendarInfo перечисляет информацию календаря, доступную в указанной «локальной» среде.
EnumDateFormats перечисляет длинные и короткие форматы дат, доступные в указанном «локальном» параметре.
EnumSystemCodePages перечисляет установленные или поддерживаемые кодовые страницы в системе.
EnumSystemLocales перечисляет «локальные» настройки, которые система установила или обеспечивает поддержку.
EnumTimeFormats перечисляет форматы времени, применимые к указанному местоположению.
ExitWindowsEx завершает работу Windows и перезагружается с определенными параметрами
ExpandEnvironmentStrings расширяет строку среды.
FreeEnvironmentStrings переводит указанный блок строки среды.
GetACP определяет действующую в данный момент кодовую страницу ANSI.
GetAsyncKeyState определяет состояние указанного виртуального ключа при вызове функции.
GetCaretBlinkTime определяет частоту мигания курсора курсора.
GetCaretPos определяет текущую позицию курсора
GetClipCursor Получает прямоугольник, описывающий область отсечения, указанную в данный момент для указателя мыши.
GetCommandLine получает указатель на текущий буфер командной строки.
GetComputerName получает имя этого компьютера.
GetCPInfo получает информацию, относящуюся к указанной кодовой странице.
GetCurrencyFormat форматирует число в соответствии с форматом валюты для указанного «локального» параметра.
GetCursor Получает дескриптор текущего выбранного указателя мыши.
GetCursorPos получает текущую позицию указателя мыши.
GetDateFormat форматирует системную дату в указанном «локальном» формате.
GetDoubleClickTime определяет интервал времени между двумя последовательными щелчками мыши, которые будут обработаны как событие двойного щелчка.
GetEnvironmentStrings выделяет и возвращает дескриптор блока памяти, содержащего текущие параметры строки среды.
GetEnvironmentVariable получает значение переменной среды.
GetInputState определяет, есть ли ожидающие обработки события мыши или клавиатуры.
GetKBCodePage заменяется на GetOEMCP, обе функции абсолютно одинаковы.
GetKeyboardLayout получает дескриптор, описывающий раскладку клавиатуры указанного приложения.
GetKeyboardLayoutList получает список всех раскладок клавиатуры, применимых к системе.
GetKeyboardLayoutName получает имя текущей активной раскладки клавиатуры.
GetKeyboardState получает текущее состояние каждой виртуальной клавиши на клавиатуре.
GetKeyboardType получает информацию об используемой клавиатуре.
GetKeyNameText определяет имя ключа по скан-коду.
GetKeyState определяет состояние указанного виртуального ключа для ключей, которые были обработаны при последнем вводе информации.
GetLastError нацелен на ранее вызванную функцию API. Используйте эту функцию для получения расширенной информации об ошибках.
GetLocaleInfo получает информацию, относящуюся к указанному «месту».
GetLocalTime получает местную дату и время.
GetNumberFormat форматирует число в определенном формате для указанного «места».
GetOEMCP определяет кодовую страницу Windows для преобразования между наборами символов OEM и ANSI.
GetQueueStatus определяет тип сообщения, ожидающего обработки (ожидающего обработки) в очереди сообщений приложения.
GetSysColor определяет цвет указанного объекта отображения окна.
GetSystemDefaultLangID получает идентификатор языка системы по умолчанию.
GetSystemDefaultLCID получает текущее системное «место» по умолчанию.
GetSystemInfo получает информацию, относящуюся к базовой аппаратной платформе.
GetSystemMetrics возвращает информацию, связанную со средой Windows.
GetSystemPowerStatus получает информацию, связанную с текущим состоянием питания системы.
GetSystemTime получает текущее системное время. На этот раз используется формат «координированного мирового времени» (т. е. UTC, также называемого GMT).
GetSystemTimeAdjustment синхронизирует внутренние системные часы с внешним источником часов.
GetThreadLocale получает локальный идентификатор текущего потока.
GetTickCount используется для получения времени (в миллисекундах), прошедшего с момента запуска Windows.
GetTimeFormat форматирует системное время в определенном формате для указанного в данный момент «места».
GetTimeZoneInformation получает информацию, связанную с настройками часового пояса системы.
GetUserDefaultLangID получает идентификатор языка по умолчанию для текущего пользователя.
GetUserDefaultLCID Получает «локальные» настройки текущего пользователя по умолчанию.
GetUserName получает имя текущего пользователя
GetVersion определяет текущие версии Windows и DOS.
GetVersionEx получает информацию о версии, связанной с платформой и операционной системой.
HideCaret скрывает каретку (курсор) в указанном окне.
IsValidCodePage определяет, действительна ли кодовая страница.
IsValidLocale определяет, действителен ли локальный идентификатор.
Функция keybd_event имитирует действия клавиатуры.
LoadKeyboardLayout загружает раскладку клавиатуры.
MapVirtualKey выполняет различные преобразования кода сканирования и символов в зависимости от указанного типа сопоставления.
MapVirtualKeyEx выполняет различные преобразования кода сканирования и символов в зависимости от указанного типа сопоставления.
MessageBeep воспроизводит системный звук. План распределения звука системы определяется в панели управления.
mouse_event имитирует событие мыши
OemKeyScan определяет код сканирования и состояние клавиши Shift символа ASCII в наборе символов OEM.
OemToChar преобразует строку из набора символов OEM в набор символов ANSI.
SetCaretBlinkTime определяет частоту мигания курсора (курсора).
SetCaretPos определяет положение курсора.
SetComputerName устанавливает новое имя компьютера.
SetCursor устанавливает указанный указатель мыши на текущий указатель
SetCursorPos устанавливает положение указателя.
SetDoubleClickTime устанавливает интервал времени между двумя последовательными щелчками мыши, которые система считает событием двойного щелчка.
SetEnvironmentVariable устанавливает для переменной среды указанное значение.
SetKeyboardState устанавливает текущее состояние каждой виртуальной клавиши на клавиатуре.
SetLocaleInfo изменяет информацию о «локальных» настройках пользователя.
SetLocalTime устанавливает текущее местное время.
SetSysColors устанавливает цвет объекта, отображаемого в указанном окне.
SetSystemCursor изменяет любой стандартный системный указатель.
SetSystemTime устанавливает текущее системное время
SetSystemTimeAdjustment периодически добавляет значение калибровки для синхронизации внутренних системных часов с внешним источником тактового сигнала.
SetThreadLocale устанавливает локаль для текущего потока.
SetTimeZoneInformation устанавливает информацию о часовом поясе системы.
ShowCaret отображает курсор (курсор) в указанном окне.
ShowCursor управляет видимостью указателя мыши.
SwapMouseButton определяет, следует ли поменять местами функции левой и правой кнопок мыши.
SystemParametersInfo получает и устанавливает большое количество системных параметров Windows.
SystemTimeToTzSpecificLocalTime преобразует системное время в местное время.
ToAscii преобразует виртуальную клавишу в символ ASCII на основе текущего кода сканирования и информации о клавиатуре.
ToUnicode преобразует виртуальную клавишу в символ Юникода на основе текущего кода сканирования и информации о клавиатуре.
UnloadKeyboardLayout выгружает указанную раскладку клавиатуры.
VkKeyScan определяет код виртуальной клавиши и состояние клавиши Shift на основе символа ASCII в наборе символов Windows.
над
3. Функция меню
AppendMenu добавляет пункт меню в указанное меню.
CheckMenuItem проверяет или снимает флажок с указанного пункта меню.
CheckMenuRadioItem указывает, что пункт меню отмечен как элемент «радио».
CreateMenu создает новое меню.
CreatePopupMenu создает пустое всплывающее меню.
УдалитьМеню удаляет указанный пункт меню.
DestroyMenu удаляет указанное меню.
DrawMenuBar перерисовывает меню для указанного окна.
EnableMenuitem разрешает или отключает указанные элементы меню
Getmenu получает ручку меню в окне
Getmenucheckmarkdimensions возвращает размер проверки меню
GetMenucontexTheLpid получает идентификатор сцены справки в меню
GetMenudeFaultItem определяет, какой элемент в меню является элементом по умолчанию
GetMenuitEmcount возвращает количество предметов (пункты меню) в меню
Getmenuitemid возвращает идентификатор меню элемента, расположенного в указанной позиции в меню
GetMenuiteMinfo получает (получает) конкретную информацию, связанную с пунктом меню
GetMenuitEmrect Загружает информацию о координате экрана указанного элемента меню в прямоугольнике
GetMeundate получает информацию, связанную с состоянием указанного пункта меню
GetMenustring получает строку указанного пункта меню
Getsubmenu получает ручку всплывающего меню, которое расположено в указанной позиции в меню
GetSystemmenu получает ручку меню системы указанного окна
Hilitemenuitem контролирует состояние выделения состояния меню верхнего уровня
INSERTMENU вставляет запись меню в указанную позицию в меню, перемещая другие записи по мере необходимости
INSERTMENIUITEM вставляет новый пункт меню
Исмену определяет, является ли указанная ручка меню
LoadMenu загружает меню из указанного модуля или экземпляра приложения
LoadMenUindirect Загружает меню
MenuitemFrompoint определяет, какой элемент меню содержит указанную точку на экране
ModifyMenu изменений записей меню
Удаление введенного меню удаляет указанную запись меню
SetMenu устанавливает меню Window
SetMenuContexTheLpid устанавливает идентификатор справочной сцены меню
SetMenudeFaultItem устанавливает элемент меню в качестве элемента по умолчанию
SetMenuitEmbitMaps устанавливает определенную растровую карту, которая будет использоваться в указанном элементе меню вместо стандартного символа проверки (√)
SetMenuitEminfo устанавливает указанную информацию для элемента меню
Trackpopupmenu отображает всплывающее меню в любом месте на экране
TrackPopupMuengex похож на Trackpopupmenu, за исключением того, что он предоставляет дополнительную функциональность
над
Ниже приведены несколько определений типа о функциях меню
Menuiteminfo Эта структура содержит информацию о пунктах меню
TPMParams Эта структура используется функцией TrackPopuPmuex для поддержки дополнительной функциональности
4. Функция рисования
AbortPath отбрасывает все пути, выбранные в указанную сцену устройства. Также отменяет любое создание пути в настоящее время
Anglearc рисует линию с соединительной дугой
Arcdraw Arc
Начало запускает ветвь пути
Canceldc отменяет длинную операцию рисования в другом потоке
Аккорд рисует аккорд
BloseNhmetafile закрывает указанную сцену Enhanced Metafile Device и возвращает ручку в недавно созданный метафил
Закрыть.
Closemetafile закрывает указанную сцену метафильного устройства и возвращает ручку в недавно созданный метафил
CopyEnhmetafile производит копию (копию) указанного расширенного метафиля
Copymetafile производит копию указанного (стандартного) метафильного
CreateBrushIndirect создает кисть на основе структуры данных логарифма
Createdibpatternbrush создает кисть, используя независимую от устройства растровое изображение, чтобы указать стиль кисти (рисунок)
CreateEnhmetafile создает улучшенную сцену метафильного устройства
CreateHatchBrush создает кисть с теневым рисунком
CreateMetafile создает сцену устройства метафильного
CreatePatternBrush создает кисть, используя растровую карту, которая указывает рисунок кисти
CreatePenceRese Crush с указанным стилем, шириной и цветом
CreatePenIndirect создает ручку на основе указанной структуры logpen
CreateSolidBrush создает кисть с твердым цветом
DeleteEnhmetafile удаляет указанное усиление метафиля
DeleteMetafile удаляет указанный метафил
DeleteObject Удаляет объект GDI, и будут выпущены все системные ресурсы, используемые объектом.
Drateedge рисует прямоугольную границу, используя указанный стиль
Функция побега DrawSescape отправляет данные непосредственно в драйвер устройства отображения
DrawFocusRect рисует прямоугольник фокусировки
DrawFrameControl рисует стандартный контроль
DrawState применяет различные эффекты к изображению или операции рисунка
Эллипс рисует эллипс, окруженный указанным прямоугольником
EndPath прекращает определять путь
Enumenhmetafile перечисляет отдельные записи метафильных для улучшенного метафиля.
Enummetafile перечисляет отдельные записи метафил для стандартного метафиля Windows
EnumObjects перечисляет кисти и кисти, которые можно использовать с указанной сценой устройства
Extcreatepen создает расширенную кисть (декоративная или геометрическая)
Extfloodfill заполняет область с выбранной в настоящее время кистью в указанной сцене устройства.
FillPath закрывает любые открытые формы на пути и заполняет их текущей кистью
Заполняет прямоугольник указанной кистью
FlattenPath преобразует все кривые на пути в сегменты линии
Заполнение заполнения заполняет область на указанной сцене устройства с помощью в настоящее время выбранной кисти
Framerect рисует границу вокруг прямоугольника, используя указанную щетку
Gdicomment добавляет сообщение комментария к указанной сцене Metafile Device
Gdiflush выполняет любые ожидающие операции рисования
GdigetBatchLimit определяет, сколько команд рисования GDI в очереди
Gdisetbatchlimit указывает, сколько команд рисования GDI может быть в очереди
GetArcDirection определяет текущее направление чертежа при рисовании дуги.
Getbkcolor получает текущий цвет фона указанной сцены устройства
GetBKMode получает текущий режим заполнения фонового заполнения для указанной сцены устройства.
GetBrushorgex определяет отправную точку выбранной в настоящее время кисти в указанной сцене устройства
GetCurrentObject получает в данный момент выбранное объект указанного типа
GetCurrentPositionEx получает текущую позицию ручки в указанной сцене устройства
Getenhmetafile получает ручку метафильного расширенного метафиля, содержащегося в файле диска
Getenhmetafilebits копирует указанное усиление метафиля в буфер памяти
Getenhmetafiledescription возвращает описание улучшенного метафиля
Getenhmetafileheader получает метафильный заголовок расширенного метафиля
Getenhmetafilepaletteentries получает все или часть палитры Metafile
GetMetafile получает ручку метафильной метафил, содержащуюся в файле диска
GetMetafilebitsex копирует указанный метафил в буфер памяти
GetTerTerLimit получает настройку ограничения наклона (MITRE) на сцене устройства
GetNearestColor получает твердый цвет, ближайший к указанному цвету на основе возможностей отображения устройства.
GetObjectApi получает структуру, описывающую указанный объект
GetObjectType определяет тип объекта GDI, на который ссылаются указанная ручка
GetPath получает серию данных, которые определяют текущий путь
GetPixel получает значение RGB пикселя в указанной сцене устройства
GetPolyFillMode получает режим заполнения полигона для указанной сцены устройства
GetRop2 получает текущий режим рисования для указанной сцены устройства
GetStockObject получает присущий объекту (Stock)
Gessycolorbrush получает кисть для любого стандартного цвета системы
GetWinmetafilebits преобразует расширенную метафильную в стандартную метафиль Windows, заполняя буфер данных для стандартного метафиля
Invertrect инвертирует указанный прямоугольник в сцене устройства, инвертируя значение каждого пикселя.
Linedda перечисляет все точки в указанном сегменте линии
Lineto использует текущую ручку, чтобы провести линию из текущей позиции в указанную точку.