Función de devolución de llamada y modelo de eventos de Delphi Función de devolución de llamada: la función de devolución de llamada es un mecanismo en el que la persona que llama pasa algunos parámetros al objeto al inicializar un objeto (el objeto aquí se refiere a objetos en programación orientada a objetos, funciones globales, etc.), mientras pasa una función dirección a la que la persona que llama puede acceder al objeto. Esta función es un acuerdo de notificación entre la persona que llama y la persona que llama. Cuando ocurre el evento acordado, la persona que llama (generalmente incluido un hilo de trabajo) llamará a la función de acuerdo con la dirección de la función de devolución de llamada. De esta manera, la persona que llama está en un hilo y el destinatario está en otro hilo. Hay algunas funciones en la API de Windows que utilizan funciones de devolución de llamada, como CreateThread, SetWindowLong, etc. La función de devolución de llamada correspondiente se define de la siguiente forma: function CallBackFunc(Wnd: HWND; Msg, WParam, LParam: Longint): Longint;stdcall;PRocedure ThreadFunction(Ptr: Pointer); stdcall; Mensaje: el mensaje también se puede considerar como una especie de devolución de llamada, porque la persona que llama también pasa el mensaje al destinatario durante la inicialización. . La persona que llama envía el mensaje. De esta manera, la persona que llama está en el hilo principal y el destinatario está en el hilo principal o hilo de trabajo. Modelo de eventos de Delphi: muchos componentes visuales en VCL de Delphi utilizan modelos de eventos, como el evento OnCreate de TForm. El principio es: especificar la función del evento en tiempo de diseño, y cuando el evento se activa en tiempo de ejecución, se llamará a la función especificada en tiempo de diseño. función de evento. Mecánicamente, el modelo de eventos de Delphi es el mismo que el de las devoluciones de llamada. Pero existen algunas diferencias en las formas específicas. Una función de devolución de llamada pura tiene la forma de una función global, mientras que un evento Delphi tiene la forma de un método de objeto. Es decir, se puede definir el siguiente tipo de función de devolución de llamada: typeTCallBackFunc =. procedimiento (pData: puntero) del objeto. Esto hace que el evento de Delphi solo se use internamente en Delphi, la función de devolución de llamada es en varios idiomas. También tenga en cuenta que la función de devolución de llamada es generalmente un subproceso creado en el cuerpo de la devolución de llamada (los componentes en Delphi están en el subproceso principal), por lo que se requiere protección de sección crítica.