API (interfaz de programación de aplicaciones) Interfaz de programación de aplicaciones, que debe usarse en todos los lenguajes de computadora. ¿Qué es una API? La API es una forma para que los programas usen los servicios proporcionados por el sistema operativo. El filtrado de pruebas y el hardware al programar. Por lo tanto, si puede usar API para implementar funciones durante la programación, intentamos usarlas.
l Cómo usar la API de Windows en Delphi
En el trabajo de desarrollo diario, a menudo utilizamos funciones de la API de Windows, entonces, ¿dónde existen las funciones de API? Podemos entender de esta manera que la función API está encapsulada en el archivo del sistema DLL proporcionado por el sistema Windows. Por ejemplo, el procedimiento de pitido que usamos a menudo se implementa llamando a MessageBeep en user32.dll en el directorio del sistema Windwos; Delphithe con mayor frecuencia que los DLL son: advapi32.dll, kernel32.dll, mpr.dll, versión.dll, comctl32.dll, gdi32.dll, opengl32.dll, user32.dll, wintrust.dll, msimg32.
Entonces, ¿cómo usa Delphi esta función API? Dado que la función API existe en la DLL del sistema, podemos llamar a la función API al igual que llamamos la DLL que escribimos. Hay dos formas de llamar a las funciones de DLL, una es el método estático y el otro es el método dinámico. Las API que llaman ventanas son estáticas, ¿por qué? Esto se debe a que estos DLL son los servicios más básicos proporcionados por el sistema operativo.
L API y programación diaria
Delphi encapsula la mayoría de las funciones de la API de Windows (principalmente en la unidad de Windows. Pero a veces, cuando hay requisitos especiales, es posible que tengamos que llamar a algunas API que no han sido encapsuladas por Delphi y, a veces, incluso llamar a funciones de API que no han sido publicadas por Windows. Entonces, ¿cómo se llama a estas funciones de API? Como se mencionó anteriormente, solo use llamadas de método estático. Para llamadas más detalladas, consulte la información relevante.
La clave para llamar a estas funciones API no encapsuladas de Delphi es conocer los parámetros. Puede consultar la última información MSDN o relacionada.
L API y VCL
El MFC de Microsoft tiene una gran cantidad de API de Windows encapsuladas, y VCL no es una excepción. La mayor parte de la implementación de las funciones de VCL no se puede separar de la API de Windows, ya sea directamente llamada o simplemente encapsulada y luego llamada. Por ejemplo, la implementación de la repinción de tcontrol (en la unidad de control):
procedimiento tcontrol.Repaint;
varilla
DC: HDC;
Comenzar
if (visible o (csdesigning in ComponentState) y no (
csnodesignVisible en controlstyle)) y (padre <> nil) y
Parent.handLealLocated entonces
Si csopacque en controlstyle entonces
Comenzar
// El getDC de DLL se llama directamente
Dc: = getDC (parent.handle);
Intentar
// llame directamente a GDI32.Dll's InterSectClipRect
IntersectClipRect (DC, izquierda, superior, izquierda + ancho, superior +
Altura);
// Parent.PaintControls llama a una gran cantidad de API
Parent.PaintControls (DC, Self);
Finalmente
// llame directamente a user32.dll liberado
LiberC (Parent.Handle, DC);
fin;
fin
Comenzar
// Los dos siguientes se llaman por encapsulación
Invalidar;
Actualizar;
fin;
fin;
Se puede ver que hay API en todas partes en VCL. Se preocupan por esos molestos parámetros API.
¿Qué es com? Com (modelo de objetos componentes), un modelo de objeto componente, es un modelo de componente de software basado en la plataforma de Windows que permite que diferentes objetos independientes se comuniquen entre sí sin ninguna restricción de lenguaje informático. Esta definición es relativamente abstracta. Se accede a los objetos COM a través de una interfaz. El propósito del objeto COM es realizar el intercambio de recursos. .
l vcl y com
COM es algo que Microsoft ha elogiado antes, por lo que está en todas partes en el sistema operativo de Windows. es de tcustomadodataset heredado, la definición de tcustomadodataSet es la siguiente:
TcustomadoDataSet = class (tdataset, iunknown,
RecordSetEventsvt)
Privado
FrecordSetObject: _RecordSet;
Ffindcursor: _RecordSet;
FlookUpcursor: _RecordSet;
FlockCursor: _RecordSet;
Frowset: IROWSET;
Facces: Iaccessor;
Frowsetfind: irowsetfind;
FHACCESOR: HACCESOR;
Folerecbufsize: entero;
…
fin;
ADO (objetos de datos de Microsoft ActiveX), una colección de objetos COM que acceden a la base de datos a través del proveedor de Microsoft OLE DB. Por ejemplo, estudiaremos el proceso de implementación del primer método de TadoQuery:
TadoQuery.first-> tdataset.first-> tdataset.internalfirst-> tcustomadoDataSet.InternalFirst-> RecordSet15.
TadoQuery hereda de tcustomadodataset, y tcustomadodataset hereda de tdataset, tdataset.internalfirst define un método virtual, y subclase tcustomadodataSet.internalfirst lo anula. TcustomadoDataSet.
No es difícil encontrar que TadoQuery.first finalmente se implementa a través de la interfaz que llama al objeto COM.
L Delphi y Windows Shell
¿Qué es un shell de Windows? Windows Shell es un entorno para la operación de la interfaz de Windows, y también nos proporciona una potente escalabilidad para la programación. Utilizamos los shells de Windows para programar ciertas funciones, llamadas extensiones de shell. Por ejemplo, si su máquina tiene Winrar instalada, verá el menú comprimido Winrar en el menú de clic derecho en la carpeta. Estas funciones se implementan a través de las extensiones de Windows Shell.
El shell de Windows está basado en COM, por lo que todas las extensiones de shell deben implementarse a través de interfaces. Delphi también define muchas interfaces de extensión de shell, en la unidad fuente/rtl/win/shlobj.pas en el directorio de instalación de Delphi7.
Hay un ejemplo de Virtual ListView en el directorio de demostración de Delphi, que es realizar la navegación en disco a través de las extensiones de shell de Windows.
El lenguaje de ensamblaje en el código también es una característica importante de Delphi.
El lenguaje de ensamblaje es un lenguaje de computadora de nivel relativamente bajo que está estrechamente relacionado con el hardware. Por lo tanto, tratamos de no usarlo en la programación diaria, pero en algunas ocasiones especiales (como los requisitos de alto rendimiento y la manipulación directa de hardware), aún puede desempeñar un papel importante.
El fin.
(Si necesita reimprimir, indique la fuente y el autor http://haitian.myrice.com)