Curso básico de programación en VB
¿Qué es el navegador de texto APIAPI?
Tipo de datos de declaración de función API y "seguridad de tipos"
estructura constante
Resuma algunos conjuntos de funciones API: funciones de control y mensajes, funciones de hardware y sistema, funciones de menú, funciones de dibujo
¿Qué es la API?
En primer lugar, es necesario explicarles a todos qué es una API. La llamada API fue escrita originalmente para programadores de C y C++. En pocas palabras, API es un tipo de función que se incluye en un archivo de biblioteca de enlace dinámico adicional llamado DLL. Según la definición estándar, API es la interfaz de programación de aplicaciones de 32 bits de Windows. Es una serie de funciones, mensajes y estructuras muy complejas que permiten a los programadores utilizar diferentes tipos de lenguajes de programación para compilar programas que se ejecutan. en aplicaciones de Windows 95 y Windows NT en el sistema. Se puede decir que si alguna vez has estudiado VC, API no es un problema para ti. Pero si no ha aprendido VC o no está familiarizado con la estructura de Windows95, se puede decir que aprender API será algo muy difícil.
Si abre la carpeta SISTEMA de WINDOWS, puede encontrar que hay muchos archivos adicionales llamados DLL. Una DLL contiene no sólo una función API, sino docenas o incluso cientos. ¿Podremos todos dominarlo? La respuesta es no: es imposible dominarlo. Pero, de hecho, realmente no necesitamos dominarlos todos. Solo debemos concentrarnos en dominar las funciones API que vienen con el sistema Windos. Sin embargo, también se deben descartar las funciones que duplican las funciones propias de VB. Por ejemplo, V.B.
El comando etAttr puede obtener atributos de archivo y SetAttr puede establecer atributos de archivo. También hay funciones correspondientes para la API.
GetFileAttributes y SetFileAttributes tienen un rendimiento similar. Después de tal cálculo, sólo quedan 500 o 600. Sí, bastantes. Sin embargo, me atrevo a decirte que mientras domines 100 de ellos familiarmente, tu nivel de programación será al menos el doble de lo que es ahora. Aunque la gente dice que VB y WINDOWS tienen una relación cercana, creo que API está más cerca.
VENTANAS. Si aprende la API, la primera ganancia es su comprensión de la arquitectura WINDOWS. Esta ganancia no es fácil.
¿Qué pasaría si no confiaras en las API? Puedo decirte que la mayoría de ellos son libros de programación avanzada (por supuesto, esto no se debe a que el título del libro sea "avanzado" sino "avanzado" en el "Contenido de este libro" al principio). Los libros están destinados a lectores con cierta base en VB), y las primeras preguntas suelen comenzar con la API. Por lo tanto, se puede decir que si no aprende API, probablemente permanecerá en el nivel junior y no podrá ascender. La única manera puede ser pedir ayuda a los demás: me estoy muriendo, ven y sálvame, ¿qué debo hacer con esto, qué debo hacer con aquello? Por supuesto, ahora hay demasiada gente buena en línea. (incluyéndome a mí, jeje), pero debes entender que a través de este método, no podrás producir buenas obras en tus manos. Esto se debe a que sin este conocimiento no puedes formarte un concepto de diseño general en tu mente.
Navegador de texto API[volver]
Muchas funciones API son muy largas. ¿Quiere ver cómo se ve? Aquí está la función APIDdeClientTransaction como ejemplo:
DeclareFunctionDdeClientTransactionLib"user32"(pDataAsByte,ByValcbDataAsLong,ByValhConvAsLong,ByValhszItemAsLong,ByValwFmtAsLong,ByValwTypeAsLong,ByValdwTimeoutAsLong,pdwResultAsLong)AsLong
¡Guau! ¿Hasta luego? Si nunca has estado expuesto a la API, creo que debes sentirte intimidado. Quizás estés pensando si deberías seguir aprendiendo. Pero no te preocupes, afortunadamente los diseñadores de Microsoft nos brindan herramientas útiles, esta es la API
Visor de texto.
A través del visor de texto API, podemos encontrar fácilmente las declaraciones de funciones, los tipos de estructuras y las constantes requeridas por el programa, luego copiarlos al portapapeles y finalmente pegarlos en el segmento de código del programa VB. En la mayoría de los casos, siempre que determinemos los tres aspectos de funciones, estructuras y constantes requeridas por el programa, podemos agregarlos al segmento del programa mediante las operaciones anteriores en el navegador de texto API, para que puedan usarse en el programa. . función. Estas son las preguntas de sentido común más básicas para aprender API, y son mucho menores que el enorme contenido del sistema API. ¿Dónde desperdiciaremos nuestra energía en el futuro (esto de ninguna manera es un desperdicio)?
Cuándo usar qué función, cuándo usar qué tipo de estructura, cuándo usar qué constante.
Declaración de función API
Pensemos en retrospectiva. En VB, ¿cómo declarar una función? Creo que si estás leyendo este artículo, definitivamente podrás responder esta pregunta. Aquí hay una declaración de función que debería resultarle familiar:
FunciónSetFocus(ByValhwndAsLong)AsLong
Es decir, esta línea de código define una función llamada SetFocus. Esta función tiene un parámetro de tipo de datos Long y se pasa por valor (ByVal). Después de ejecutar la función, se devolverán datos Long.
La declaración de funciones API también es muy similar. Por ejemplo, la función SetFocus en la API se escribe así:
DeclareFunctionSetFocusLib"user32"Alias"SetFocus"(ByValhwndAsLong)AsLong
Es un poco más complicado. Sí, es un poco más complicado. Pero puedo decirte que, a excepción de estas partes adicionales, las otras partes siguen siendo las mismas que aprendiste antes. Lo mismo ocurre con las llamadas a funciones en los programas. como:
DimdlAsLong
dl&=SetFoucs(Form1.Hwnd)
Pero una cosa está clara. No es como un programa que escribes tú mismo donde puedes ver el mecanismo operativo, ni es como VB.
Al igual que las funciones integradas, puede conocer su uso en la ayuda en línea de VB. La única forma es aprender y buscar información distinta a VB.
La declaración Declare se utiliza para declarar una referencia a un procedimiento externo en una biblioteca de vínculos dinámicos (DLL) a nivel de módulo. Para ello, sólo hay que recordar que cualquier declaración de función API debe escribir esta declaración.
Iib indica la biblioteca de vínculos dinámicos o el recurso de código que contiene el procedimiento o función declarado. En otras palabras, explica la cuestión de de dónde proviene la función o proceso.
Como en el ejemplo anterior, SetFocusLib "user32" indica que la función SetFocus proviene del archivo user32.dll. Los principales archivos de la biblioteca de enlaces dinámicos dll son:
user32.dllAdministración de Windows. Generar y gestionar la interfaz de usuario de la aplicación.
Interfaz del dispositivo gráfico GDI32.dll. Producir salida gráfica para dispositivos Windows
Servicio del sistema Kernel32.dll. Accede a los recursos informáticos del sistema operativo.
Tenga en cuenta que cuando el archivo DLL no está en la carpeta Windows o Sistema, su fuente debe indicarse en la función (
camino). Por ejemplo, SetFocusLib "c:/Mydll/user32"
Los alias en las declaraciones de funciones son opcionales. Indica que el procedimiento a llamar tiene otro nombre (alias) en la biblioteca de vínculos dinámicos (DLL). Por ejemplo, el alias "SetFocus" indica que el otro nombre de la función SetFocus en User32.dll es,
Establecer enfoque. ¿Por qué los dos nombres son iguales? Por supuesto, también pueden ser diferentes. En muchos casos, el nombre de la función descrita por Alias, es decir, el último carácter del alias suele ser el carácter A. Por ejemplo, otro nombre de la función SetWindowsText es
SetWindowsTextA, expresado como Alias "SetWindowsTextA". Esta A es solo una convención de nomenclatura utilizada por los diseñadores, que indica que la función pertenece a la versión ANSI.
Entonces, ¿para qué sirven exactamente los alias? En teoría, los alias proporcionan métodos funcionales para llamar a las API con otro nombre. Si especifica un alias, aunque llamamos a la función de acuerdo con la función después de la declaración Declare, el alias es la primera opción para la llamada real de la función. Por ejemplo, las siguientes dos declaraciones de función (Función, ABCD) son válidas y llaman a la misma función SetFocus:
DeclareFunctionSetFocusLib"user32""SetFocus"(ByValhwndAsLong)AsLong
DeclareABCDSetFocusLib"user32"Alias"SetFocus"(ByValhwndAsLong)AsLong
Cabe señalar que al elegir Alias, debe prestar atención al caso del alias; si no elige Alias, el nombre de la función debe prestar atención al caso y no se puede cambiar. Por supuesto, en muchos casos, dado que la declaración de función es directamente desde la API
Se copia del navegador de texto, por lo que la posibilidad de que ocurra este error es muy pequeña, pero es necesario que lo sepas.
Un último recordatorio: las declaraciones de API (incluidas estructuras y constantes) deben colocarse en la sección "Declaraciones generales" del formulario o módulo.
Tipos de datos y "seguridad de tipos"
Los tipos de datos utilizados en las funciones API son básicamente los mismos que los de VB. Pero como función API de WIN32, Integer no existe
Tipo de datos. Otro punto es que el tipo de datos booleano no se puede ver en las funciones API. El tipo de datos Variant aparece en forma de Cualquiera en las funciones API, como DataAsAny. Aunque la implicación es que se permite pasar cualquier tipo de parámetro como parámetro de esta función API, existen ciertas desventajas al hacerlo. La razón es que esto desactivará todas las comprobaciones de tipo de los parámetros de destino. Naturalmente, esto crea oportunidades de errores en varios tipos de llamadas de parámetros.
Para imponer una verificación de tipos estricta y evitar los problemas mencionados anteriormente, una forma es utilizar la tecnología de alias mencionada anteriormente en la función. Por ejemplo, se puede utilizar otro método de declaración para la función API GetDIBits. Como sigue:
Prototipo de función GetDIBits:
PublicDeclareFunctionGetDIBitsLib"gdi32"Alias"GetDIBits"(ByValaHDCAsLong,ByValhBitmapAsLong,ByValnStartScanAsLong,ByValnNumScansAsLong,lpBitsAsAny,lpBIAsBITMAPINFO,ByValwUsageAsLong)AsLong
Modificación de la función GetDIBits:
PublicDeclareFunctionGetDIBitsLongLib"gdi32"Alias"GetDIBits"(ByValaHDCAsLong,ByValhBitmapAsLong,ByValnStartScanAsLong,ByValnNumScansAsLong,lpBitsAsLong,lpBIAsBITMAPINFO,ByValwUsageAsLong)AsLong
A través del conocimiento aprendido anteriormente en este curso, ya podemos saber si la función prototipo GetDIBits o la función GetDIBitsLong modificada realmente llamará a la función GetDIBits original especificada por Alias. Pero deberías ver que la diferencia entre los dos es que forzamos que el parámetro lpBits sea Long en la función modificada. Esto minimizará la posibilidad de que se produzcan errores en las llamadas a funciones. Este enfoque se denomina declaración de "tipo seguro".
Los tipos de datos que se ven a menudo en las funciones API son: Largo, Cadena, Byte, Cualquiera... (Eso es todo).
constante
No hay nada especial en las constantes API. Mire el siguiente código en VB:
Mensaje=MsgBox("Hola",vbOKCancel)
Sabemos que el valor de la constante vbOKCancel es igual a 1. Podemos escribir el código anterior así sin afectar la función del código:
Mensaje=MensajeCuadro("Hola",1)
Pero es posible que no esté dispuesto a elegir la última opción porque dificultará la comprensión del código. La API también adopta este enfoque. Lo que pasa es que las constantes de la API deben inicializarse y declararse antes del evento, lo que el propio VB no puede entender. Su contenido todavía proviene de la API.
Navegador de texto. La forma específica es la siguiente:
PublicConstABM_ACTIVATE=&H6
PublicConstRIGHT_CTRL_PRESSED=&H4
PublicConstRPC_E_SERVER_DIED=&H80010007
PrivadoConstRPC_S_CALL_FAILED_DNE=1727&
Al inicializar constantes, algunos programas usan Global, como GlobalConstABM_ACTIVATE=&H6, pero creo que Public puede reemplazarlo por completo. He usado Global en el pasado, pero no mucho ahora. Si usa este ahora y aquel ahora, no podrá mantener la coherencia entre los programas, o al menos parece incómodo.
estructura[volver]
La estructura es el lenguaje de C y C++. Generalmente llamados tipos de datos personalizados en VB. Es de suponer que muchos amigos ya lo saben. En el campo API, prefiero llamarlo estructura, porque los distintos tipos de estructura de la API no los defino en absoluto (
personalizado).
En VB, la estructura API también está definida por la declaración TYPE....ENDTYPE. Por ejemplo, en la API, la estructura de puntos se define de la siguiente manera:
Tipo públicoPOINTAPI
Valor de la coordenada XAsLong' del punto en la coordenada X (abscisa)
YAsLong'El valor de las coordenadas del punto en la coordenada Y (ordenada)
Tipo final
Para otro ejemplo, la definición de la estructura rectangular (Rect) en la API es la siguiente:
Tipo públicoRECT
Coordenada LeftAsLong'X de la esquina superior izquierda del rectángulo
TopAsLong' Coordenada Y de la esquina superior izquierda del rectángulo
Coordenada RightAsLong'X de la esquina inferior derecha del rectángulo
Coordenada Y BottomAsLong' de la esquina inferior derecha del rectángulo
Tipo final
Este contenido también se puede copiar desde el navegador de texto API. Los nombres de las variables en estas estructuras se pueden cambiar a voluntad sin afectar la estructura misma. En otras palabras, todas estas variables miembro son virtuales. Por ejemplo, la estructura POINTAPI se puede cambiar a lo siguiente:
Tipo públicoPOINTAPI
MyXAsLong'El valor de la coordenada del punto en la coordenada X (abscisa)
MyYAsLong'El valor de coordenadas del punto en la coordenada Y (ordenada)
Tipo final
Sin embargo, en términos generales esto no es necesario. La estructura en sí es un tipo de datos, por lo tanto, al usarla, debe declarar que la variable específica sea del tipo de estructura antes de poder usar la estructura en el programa. El método de declaración de la estructura es el mismo que el método de declaración de otros datos. Por ejemplo, la siguiente declaración declara la variable MyPoint como el tipo de estructura POINTAPI:
MiPuntoComoPUNTOAPI
También es muy sencillo hacer referencia a las variables miembro en la estructura. Simplemente agregue un "." después del nombre de la estructura y luego escriba la variable miembro a la que se hará referencia. Esto es muy parecido a hacer referencia a una propiedad de un objeto en VB. Por ejemplo, si asignamos el valor de la variable X en la estructura MyPoint declarada anteriormente a la variable Temp&
El código es el siguiente:
Temp&=MiPunto.X
Sin embargo, es importante tener en cuenta que no debe pensar que MyPoint en el ejemplo anterior es un valor. No es un valor, sino una dirección (
puntero). Valor y dirección son conceptos completamente diferentes. Los requisitos de estructura se pasan por referencia a las funciones de WINDOWS, es decir, todas las API.
En las funciones, las estructuras se pasan por ByRef (ByRef es el tipo predeterminado en la declaración Declare). Para pasar estructuras, no intente utilizar ByVal, no obtendrá nada. Dado que el nombre de la estructura es en realidad un puntero a la estructura (la primera dirección de la estructura), puede simplemente transferir el nombre de la estructura específica (consulte el resumen, utilicé fuente roja para resaltar este método de transferencia).
Dado que la estructura transfiere un puntero, la función leerá y escribirá directamente la estructura. Esta característica es muy adecuada para cargar los resultados de la ejecución de funciones en estructuras.
Resumen[volver]
El siguiente procedimiento se proporciona para resumir lo aprendido en esta lección. Inicie VB, cree un nuevo proyecto, agregue un botón de comando, copie el siguiente código en el segmento de código y ejecútelo.
PrivateDeclareFunctionGetCursorPosLib"user32"(lpPointAsPOINTAPI)AsLong
PrivateTypePOINTAPI'define la estructura de puntos
Valor de la coordenada XAsLong' del punto en la coordenada X (abscisa)
YAsLong'El valor de las coordenadas del punto en la coordenada Y (ordenada)
Tipo final
SubImpresiónCursorPos()
DimdlASLong
DimMyPointAsPOINTAPI
dl&=GetCursorPos(MyPoint)'Llame a la función para obtener las coordenadas del mouse en pantalla
Depurar.Imprimir"X="&Str(MiPunto.X)&"y"&"Y="&Str(MiPunto.Y)
FinSub
PrivadoSubCommand1_Click()
ImprimirCursorPos
FinSub
El resultado de salida es (cada ejecución puede obtener resultados diferentes, lo cual está determinado por la posición del puntero del mouse en la pantalla cuando se llama a la función):
X=240eY=151
En el programa se utiliza la función GetCursorPos para obtener la posición del puntero del mouse en la pantalla.
En el ejemplo anterior, puede encontrar que el contenido de la estructura MyPpint pasada como parámetro ha sufrido cambios sustanciales después de la llamada a la función. Esto se debe al hecho de que la estructura pasa por ByRef.
Algunos conjuntos de funciones API [volver]
API de Windows
1. Controles y funciones de mensajes
AjustarWindowRect Dado un estilo de ventana, calcule el tamaño de ventana requerido para obtener el rectángulo del área del cliente de destino
AnyPopup determina si hay ventanas emergentes en la pantalla
ArrangeIconicWindows organiza las ventanas secundarias minimizadas de una ventana principal
Función de entrada de hilo de conexión AttachThreadInput
BeginDeferWindowPos inicia el proceso de creación de una serie de nuevas posiciones de ventana
BringWindowToTop lleva la ventana especificada a la parte superior de la lista de ventanas
CascadeWindows organiza las ventanas en forma de cascada
ChildWindowFromPoint devuelve el identificador de la primera ventana secundaria de la ventana principal que contiene el punto especificado.
ClientToScreen determina las coordenadas de pantalla de un punto en la ventana representado por las coordenadas del área del cliente
CloseWindow minimiza la ventana especificada
Copia del contenido del rectángulo CopyRect
DeferWindowPos Esta función especifica una nueva posición de ventana para una ventana específica
DestroyWindow borra la ventana especificada y todas sus ventanas secundarias
DrawAnimatedRects representa una serie de rectángulos dinámicos.
EnableWindow permite o deshabilita todas las entradas del mouse y del teclado en la ventana especificada.
EndDeferWindowPos actualiza simultáneamente las posiciones y el estado de todas las ventanas especificadas cuando se llama a DeferWindowPos.
EnumChildWindows enumera las ventanas secundarias para la ventana principal especificada
EnumThreadWindows enumera las ventanas relacionadas con la tarea especificada
EnumWindows enumera todas las ventanas principales en la lista de ventanas
EqualRect determina si dos estructuras rectangulares son iguales
FindWindow encuentra la primera ventana de nivel superior en la lista de ventanas que cumple con los criterios especificados
FindWindowEx busca la primera subventana en la lista de ventanas que coincida con las condiciones especificadas
FlashWindow muestra la ventana especificada
GetActiveWindow obtiene el identificador de la ventana activa
GetCapture obtiene el identificador de una ventana que se encuentra en el hilo de entrada actual y tiene captura del mouse (recibe la actividad del mouse)
GetClassInfo obtiene una copia de la estructura WNDCLASS (o estructura WNDCLASSEX), que contiene información relacionada con la clase especificada.
GetClassLong obtiene una entrada de variable Long de la clase de ventana
GetClassName obtiene el nombre de clase para la ventana especificada
GetClassWord obtiene una variable entera para la clase de ventana
GetClientRect devuelve el tamaño del rectángulo en el área del cliente de la ventana especificada
GetDesktopWindow obtiene un identificador de ventana (ventana de escritorio) que representa toda la pantalla
GetFocus obtiene el control de la ventana con foco de entrada
GetForegroundWindow obtiene el identificador de la ventana frontal
GetLastActivePopup Obtiene el identificador de la ventana emergente activada más recientemente en una ventana principal determinada.
GetLastError apunta a la función API llamada anteriormente. Utilice esta función para obtener información de error extendida.
GetParent determina la ventana principal de la ventana especificada
GetTopWindow busca en la lista de ventanas interna el identificador de la primera ventana que pertenece a la ventana especificada
GetUpdateRect obtiene un rectángulo que describe la parte de la ventana especificada que debe actualizarse
GetWindow obtiene el identificador de una ventana que tiene una relación específica con una ventana fuente
GetWindowContextHelpId obtiene el ID de la escena de ayuda asociada con la ventana
GetWindowLong obtiene información de la estructura de la ventana especificada
GetWindowPlacement obtiene la información de estado y ubicación de la ventana especificada
GetWindowRect obtiene el rectángulo de rango de toda la ventana. El borde de la ventana, la barra de título, la barra de desplazamiento, el menú, etc. están todos dentro de este rectángulo.
GetWindowText obtiene el texto del título de un formulario o el contenido de un control
GetWindowTextLength investiga la longitud del texto del título de la ventana o del contenido del control
GetWindowWord obtiene información sobre la estructura de ventana especificada
InflateRect aumenta o disminuye el tamaño de un rectángulo
La función IntersectRect carga un rectángulo en lpDestRect, que es la intersección de dos rectángulos, lpSrc1Rect y lpSrc2Rect.
InvalidateRect bloquea total o parcialmente el área de cliente de una ventana
IsChild determina si una ventana es secundaria o subordinada de otra ventana
IsIconic determina si la ventana ha sido minimizada
IsRectEmpty determina si un rectángulo está vacío
IsWindow determina si un identificador de ventana es válido
IsWindowEnabled determina si la ventana está activa
IsWindowUnicode determina si una ventana es Unicode. Esto significa que la ventana recibe literales Unicode para todos los mensajes de texto.
IsWindowVisible determina si la ventana es visible
IsZoomed determina si la ventana está maximizada
LockWindowUpdate bloquea la ventana especificada y evita que se actualice
MapWindowPoints convierte puntos en las coordenadas del área del cliente de una ventana al sistema de coordenadas del área del cliente de otra ventana
MoveWindow cambia la posición y el tamaño de la ventana especificada
OffsetRect hace que el rectángulo se mueva aplicando un desplazamiento específico
OpenIcon restaura un programa minimizado y lo activa
PtInRect determina si el punto especificado está dentro del rectángulo
RedrawWindow vuelve a dibujar toda o parte de la ventana
ReleaseCapture libera la captura del mouse para la aplicación actual
ScreenToClient determina las coordenadas del área del cliente de un punto específico en la pantalla
ScrollWindow toda o parte del área del cliente de la ventana de desplazamiento
ScrollWindowEx desplaza toda o parte del área del cliente de la ventana, según opciones adicionales.
SetActiveWindow activa la ventana especificada
SetCapture establece la captura del mouse en la ventana especificada
SetClassLong establece una entrada de variable Long para la clase de ventana
SetClassWord establece una entrada para la clase de ventana
SetFocusAPI establece el foco de entrada en la ventana especificada. Si es necesario, la ventana se activa.
SetForegroundWindow establece la ventana como la ventana frontal del sistema
SetParent especifica el nuevo padre de una ventana
SetRect establece el contenido del rectángulo especificado
SetRectEmpty establece el rectángulo en un rectángulo vacío
SetWindowContextHelpId establece el ID de la escena de ayuda (contexto) para la ventana especificada
SetWindowLong establece información para la ventana especificada en la estructura de la ventana
SetWindowPlacement establece el estado de la ventana y la información de posición
SetWindowPos especifica una nueva posición y estado para la ventana
SetWindowText establece el texto del título de la ventana o el contenido del control
SetWindowWord establece información para la ventana especificada en la estructura de la ventana
ShowOwnedPopups Muestra u oculta todas las ventanas emergentes propiedad de la ventana especificada
ShowWindow controla la visibilidad de una ventana
ShowWindowAsync es similar a ShowWindow
SubtractRect carga el rectángulo lprcDst, que es el resultado de restar lprcSrc2 del rectángulo lprcSrc1.
TileWindows organiza las ventanas en orden de mosaico
UnionRect carga un rectángulo de destino lpDestRect, que es el resultado de la unión de lpSrc1Rect y lpSrc2Rect.
UpdateWindow fuerza una actualización inmediata de la ventana
ValidateRect valida toda o parte del área de cliente de la ventana
WindowFromPoint devuelve el identificador de la ventana que contiene el punto especificado. Ignorar ventanas enmascaradas, ocultas y transparentes
2.Funciones del hardware y del sistema
ActivateKeyboardLayout activa una nueva distribución de teclado. La distribución del teclado define la ubicación y el significado de las teclas en un teclado físico.
El pitido se utiliza para generar sonidos simples.
CharToOem convierte una cadena del juego de caracteres ANSI al juego de caracteres OEM
ClipCursor limita el puntero al área especificada
ConvertDefaultLocale convierte un identificador local especial en un ID local real
CreateCaret crea un cursor (cursor) basado en la información especificada y lo selecciona como el cursor predeterminado para la ventana especificada
DestroyCaret borra (destruye) un símbolo de intercalación
EnumCalendarInfo enumera la información del calendario disponible en el entorno "local" especificado
EnumDateFormats enumera los formatos de fecha larga y corta disponibles en la configuración "local" especificada
EnumSystemCodePages enumera las páginas de códigos instaladas o compatibles en el sistema
EnumSystemLocales enumera las configuraciones "locales" que el sistema ha instalado o proporciona soporte para
EnumTimeFormats enumera los formatos de hora aplicables a una ubicación específica
ExitWindowsEx sale de Windows y se reinicia con opciones específicas
ExpandEnvironmentStrings expande la cadena de entorno
FreeEnvironmentStrings traduce el bloque de cadena de entorno especificado
GetACP determina la página de códigos ANSI actualmente vigente
GetAsyncKeyState determina el estado de la clave virtual especificada cuando se llama a la función
GetCaretBlinkTime determina la frecuencia de parpadeo del cursor de intercalación
GetCaretPos determina la posición actual del cursor
GetClipCursor Obtiene un rectángulo que describe el área de recorte especificada actualmente para el puntero del mouse.
GetCommandLine obtiene un puntero al búfer de línea de comando actual
GetComputerName obtiene el nombre de esta computadora
GetCPInfo obtiene información relacionada con la página de códigos especificada
GetCurrencyFormat formatea un número según el formato de moneda para la configuración "local" especificada
GetCursor Obtiene el identificador del puntero del mouse actualmente seleccionado.
GetCursorPos obtiene la posición actual del puntero del mouse
GetDateFormat formatea una fecha del sistema en un formato "local" específico
GetDoubleClickTime determina el intervalo de tiempo entre dos clics consecutivos del mouse que se procesarán como un evento de doble clic.
GetEnvironmentStrings asigna y devuelve un identificador a un bloque de memoria que contiene la configuración de cadena del entorno actual.
GetEnvironmentVariable obtiene el valor de una variable de entorno
GetInputState determina si hay eventos de teclado o mouse pendientes (en espera de ser procesados)
GetKBCodePage se reemplaza por GetOEMCP, ambas funciones son exactamente iguales
GetKeyboardLayout obtiene un identificador que describe la distribución del teclado de la aplicación especificada.
GetKeyboardLayoutList obtiene una lista de todas las distribuciones de teclado aplicables al sistema
GetKeyboardLayoutName obtiene el nombre de la distribución de teclado actualmente activa
GetKeyboardState obtiene el estado actual de cada tecla virtual del teclado
GetKeyboardType obtiene información sobre el teclado que se utiliza
GetKeyNameText determina el nombre de la clave dado el código de escaneo.
GetKeyState determina el estado de la clave virtual especificada para las claves que se procesaron la última vez que se ingresó la información.
GetLastError apunta a la función API llamada anteriormente. Utilice esta función para obtener información de error extendida.
GetLocaleInfo obtiene información relacionada con el "lugar" especificado
GetLocalTime obtiene la fecha y hora locales
GetNumberFormat formatea un número en un formato específico para el "lugar" especificado
GetOEMCP determina la página de códigos de Windows para convertir entre conjuntos de caracteres OEM y ANSI
GetQueueStatus determina el tipo de mensaje pendiente (esperando ser procesado) en la cola de mensajes de la aplicación.
GetSysColor determina el color del objeto de visualización de Windows especificado
GetSystemDefaultLangID obtiene el ID de idioma predeterminado del sistema
GetSystemDefaultLCID obtiene el "lugar" predeterminado actual del sistema
GetSystemInfo obtiene información relacionada con la plataforma de hardware subyacente
GetSystemMetrics devuelve información relacionada con el entorno de Windows
GetSystemPowerStatus obtiene información relacionada con el estado actual de energía del sistema.
GetSystemTime obtiene la hora actual del sistema. Esta hora utiliza el formato de "hora mundial coordinada" (es decir, UTC, también llamado GMT).
GetSystemTimeAdjustment sincroniza el reloj interno del sistema con una fuente de reloj externa
GetThreadLocale obtiene el ID local del hilo actual
GetTickCount se utiliza para obtener el tiempo (milisegundos) que ha transcurrido desde que se inició Windows.
GetTimeFormat formatea una hora del sistema en un formato específico para el "lugar" actualmente especificado
GetTimeZoneInformation obtiene información relacionada con la configuración de zona horaria del sistema
GetUserDefaultLangID obtiene el ID de idioma predeterminado para el usuario actual
GetUserDefaultLCID Obtiene la configuración "local" predeterminada del usuario actual.
GetUserName obtiene el nombre del usuario actual
GetVersion determina las versiones de Windows y DOS que se están ejecutando actualmente
GetVersionEx obtiene información de la versión relacionada con la plataforma y el sistema operativo
HideCaret oculta el cursor (cursor) en la ventana especificada
IsValidCodePage determina si una página de códigos es válida
IsValidLocale determina si el identificador local es válido
La función keybd_event simula acciones del teclado
LoadKeyboardLayout carga una distribución de teclado
MapVirtualKey realiza diferentes conversiones de caracteres y códigos de escaneo según el tipo de asignación especificado.
MapVirtualKeyEx realiza diferentes conversiones de caracteres y códigos de escaneo según el tipo de asignación especificado.
MessageBeep reproduce un sonido del sistema. El plan de distribución de sonido del sistema se determina en el panel de control.
mouse_event simula un evento del mouse
OemKeyScan determina el código de escaneo y el estado de la tecla Shift de un carácter ASCII en el juego de caracteres OEM
OemToChar convierte una cadena del juego de caracteres OEM al juego de caracteres ANSI
SetCaretBlinkTime especifica la frecuencia de parpadeo del cursor (cursor)
SetCaretPos especifica la posición del cursor
SetComputerName establece un nuevo nombre de computadora
SetCursor establece el puntero del mouse especificado en el puntero actual
SetCursorPos establece la posición del puntero
SetDoubleClickTime establece el intervalo de tiempo entre dos clics consecutivos del mouse que el sistema considera un evento de doble clic.
SetEnvironmentVariable establece una variable de entorno en un valor específico
SetKeyboardState establece el estado actual de cada tecla virtual en el teclado
SetLocaleInfo cambia la información de configuración "local" del usuario
SetLocalTime establece la hora local actual
SetSysColors establece el color del objeto que se muestra en la ventana especificada
SetSystemCursor cambia cualquier puntero estándar del sistema
SetSystemTime establece la hora actual del sistema
SetSystemTimeAdjustment agrega periódicamente un valor de calibración para sincronizar el reloj interno del sistema con una fuente de señal de reloj externa.
SetThreadLocale establece la configuración regional para el hilo actual
SetTimeZoneInformation establece la información de la zona horaria del sistema
ShowCaret muestra el cursor (cursor) en la ventana especificada
ShowCursor controla la visibilidad del puntero del mouse.
SwapMouseButton determina si se intercambian las funciones de los botones izquierdo y derecho del mouse
SystemParametersInfo obtiene y establece una gran cantidad de parámetros del sistema de Windows
SystemTimeToTzSpecificLocalTime convierte la hora del sistema a hora local
ToAscii convierte una clave virtual en un carácter ASCII según el código de escaneo actual y la información del teclado.
ToUnicode convierte una clave virtual en un carácter Unicode según el código de escaneo actual y la información del teclado
UnloadKeyboardLayout descarga la distribución de teclado especificada
VkKeyScan determina el código de clave virtual y el estado de la tecla Shift basándose en un carácter ASCII en el juego de caracteres de Windows
encima
3.Función de menú
AppendMenu agrega un elemento de menú al menú especificado
CheckMenuItem marca o desmarca el elemento de menú especificado
CheckMenuRadioItem especifica que un elemento del menú se marca como un elemento de "radio"
CreateMenu crea un nuevo menú
CreatePopupMenu crea un menú emergente vacío
DeleteMenu elimina la entrada del menú especificada
DestroyMenu elimina el menú especificado
DrawMenuBar vuelve a dibujar el menú de la ventana especificada
EnableMenuitem permite o deshabilita elementos de menú especificados
GetMenu obtiene el mango de un menú en la ventana
GetMenucheckmarkdimensions Devuelve el tamaño de una marca de verificación de menú
GetMenucontexThelpid obtiene la identificación de la escena de ayuda de un menú
GetMenudeFaultItem determina qué elemento en el menú es el elemento predeterminado
GetMenuitEmcount Devuelve la cantidad de elementos (elementos del menú) en el menú
GetMenuitEmid Devuelve la ID de menú del elemento ubicado en la posición especificada en el menú
GetMenuitEminfo obtiene (recibe) información específica relacionada con un elemento de menú
GetMenuitEmrect Carga la información de coordenadas de pantalla del elemento de menú especificado en un rectángulo
GetMenustate obtiene información relacionada con el estado del elemento de menú especificado
GetMenustring obtiene la cadena del elemento de menú especificado
GetSubmenu obtiene el mango de un menú emergente, que se encuentra en la posición especificada en el menú
GetSystemMenu obtiene el mango del menú del sistema de la ventana especificada
Hilitemenuitem controla el estado destacado de los elementos de menú de nivel superior
InsertMenu inserta una entrada de menú en la posición especificada en el menú, moviendo otras entradas según sea necesario
InsertMenuitem inserta un nuevo elemento de menú
Ismenu determina si el mango especificado es un mango de menú
LoadMenu carga un menú en el módulo especificado o la instancia de la aplicación
LoadMenuIndirect Cargue un menú
MenuitemfromPoint determina qué elemento de menú contiene un punto especificado en la pantalla
ModifyMenu Cambios de entradas de menú
RemoveMenu elimina la entrada de menú especificada
Setmenu establece el menú de la ventana
SetMenucontexthelpid establece la ID de escena de ayuda de un menú
SetMenudeFaultItem Establece un elemento de menú como el elemento predeterminado
SetMenuitEmbitMaps Establece un mapa de bits específico que se utilizará en el elemento de menú especificado en lugar del símbolo de verificación estándar (√)
SetMenuitEminfo establece la información especificada para un elemento de menú
TrackPopupmenu muestra un menú emergente en cualquier lugar de la pantalla
TrackPopupMenuex es similar a TrackPopupmenu, excepto que proporciona funcionalidad adicional
encima
Las siguientes son varias definiciones de tipo sobre funciones de menú
MenuitEminfo Esta estructura contiene información sobre los elementos del menú
TPMPARAMS Esta estructura es utilizada por la función TrackPopupMenuex para admitir funcionalidad adicional
4. Función de dibujo
Abortpath descarta todas las rutas seleccionadas en la escena del dispositivo especificada. También cancela cualquier creación de ruta actualmente en progreso
AnglearC dibuja una línea con un arco de conexión
Arcdraw un arco
Beginpath comienza una rama de ruta
CancelDC cancela una operación de dibujo larga en otro hilo
Acorde dibujar un acorde
Closeenhmetafile cierra la escena de dispositivo de metafile mejorada especificada y devuelve un identificador al recién creado MetaFile
CloseFigure Al dibujar una ruta, cierre la figura abierta actualmente.
CloseMetafile cierra la escena del dispositivo MetaFile especificada y devuelve un identificador al MetaFile recién creado
Copyenhmetafile hace una copia (copia) del metafile mejorado especificado
CopyMetafile hace una copia del metafile especificado (estándar)
CreateBrushIndirect crea un pincel basado en una estructura de datos de bribón de registro
CreatedIbpatternBrush crea un pincel que usa un mapa de bits independiente del dispositivo para especificar el estilo del pincel (patrón)
Createenhmetafile crea una escena mejorada del dispositivo metafile
CreateHatchBrush crea un pincel con un patrón de sombra
CreateMetafile crea una escena del dispositivo metafile
CreatePatternBrush crea un pincel que usa un mapa de bits que especifica un patrón de pincel
CreatePenCenca un pincel con el estilo, el ancho y el color especificados
CreatePenDirect crea un bolígrafo basado en la estructura logpen especificada
CreateSolidBrush crea un pincel con un color sólido
Deleteenhmetafile elimina el metafile mejorado especificado
Deletemetafile elimina el metafile especificado
DeleToObject elimina el objeto GDI y se lanzarán todos los recursos del sistema utilizados por el objeto.
DrawEdge dibuja un borde rectangular usando el estilo especificado
La función de escape de DrawesCape envía datos directamente al controlador del dispositivo de visualización
Drawfocusrect dibuja un rectángulo de enfoque
DrawFramecontrol dibuja un control estándar
DrawState aplica una variedad de efectos a una imagen o operación de dibujo
Elipse dibuja una elipse rodeada por un rectángulo especificado
End Path deja de definir un camino
Enumenhmetafile enumera los registros de metafile individuales para un metafile mejorado.
Enummetafile enumera registros de metafile individuales para un metafile estándar de Windows
Enumobjects enumera los pinceles y pinceles que se pueden usar con la escena del dispositivo especificada
ExtCreatePen crea un cepillo extendido (ornamental o geométrico)
Extfloodfill llena un área con el pincel seleccionado actualmente en la escena del dispositivo especificada.
Fillpath cierra cualquier forma abierta en el camino y las llena con el cepillo actual
Fillrect llena un rectángulo con el cepillo especificado
Flattenpath convierte todas las curvas en un camino hacia segmentos de línea
El relleno de inundación llena un área en la escena del dispositivo especificada con el pincel seleccionado actualmente
Framerect dibuja un borde alrededor de un rectángulo usando el pincel especificado
GDicomment agrega un mensaje de comentarios a la escena de dispositivo de metafile mejorada especificada
Gdiflush realiza cualquier operación de dibujo pendiente
GDigetBatchLimit determina cuántos comandos de dibujo GDI hay en la cola
GDISETBATCHLIMIT especifica cuántos comandos de dibujo GDI se pueden hacer cola
GetArcDirection determina la dirección de dibujo actual al dibujar un arco.
GetBkcolor obtiene el color de fondo actual de la escena del dispositivo especificada
GetBkMode obtiene el modo de relleno de fondo actual para la escena del dispositivo especificada.
GetBrushorgex determina el punto de partida del pincel seleccionado actualmente en la escena del dispositivo especificada
GetCurrentObject obtiene el objeto seleccionado actualmente del tipo especificado
GetCurrentPositionEx obtiene la posición actual del bolígrafo en la escena del dispositivo especificada
Getenhmetafile obtiene el mango de metafile de un metafile mejorado contenido en el archivo de disco
Getenhmetafilebits copia el metafile mejorado especificado a un búfer de memoria
Getenhmetafiledescription devuelve una descripción de un metafile mejorado
Getenhmetafileheader obtiene el encabezado de metafile del metafile mejorado
GetenhmetafilepaletteEntries obtiene todo o parte de la paleta de metafile mejorada
GetMetafile obtiene el mango de metafile del metafile contenido en un archivo de disco
GetMetaFileBitsex copia el metafile especificado a un búfer de memoria
GetMiterLimit obtiene la configuración del límite de pendiente (MITOR) de la escena del dispositivo
GetNearestColor obtiene un color sólido más cercano al color especificado en función de las capacidades de visualización del dispositivo.
GetObjectapi obtiene una estructura que describe el objeto especificado
GetObjectType determina el tipo de objeto GDI referenciado por el mango especificado
GetPath obtiene una serie de datos que define la ruta actual
GetPixel obtiene el valor RGB de un píxel en la escena del dispositivo especificada
GetPolyFillMode obtiene el modo de relleno de polígono para la escena del dispositivo especificada
Getrop2 obtiene el modo de dibujo actual para la escena del dispositivo especificada
GetStockObject obtiene un objeto inherente (stock)
GetScolorBrush obtiene un pincel para cualquier color estándar del sistema
GetWinMetaFilebits convierte un metafile mejorado en un metafile de Windows estándar llenando un búfer con datos para un metafile estándar
Invertrect invertida un rectángulo especificado en la escena del dispositivo invirtiendo el valor de cada píxel.
LinedDA enumera todos los puntos en el segmento de línea especificado
Lineto usa la pluma actual para dibujar una línea desde la posición actual a un punto especificado.