Compartir a través de


Agregar llamadas a la API de Visual FoxPro

Para integrar el programa del usuario con Visual FoxPro, puede llamar a las rutinas de la API de Visual FoxPro. Estas rutinas de la API son funciones que puede llamar desde cualquier programa C o C++, incluido un archivo .ocx o .fll, que le proporcionan acceso a variables, le permiten administrar operaciones de bases de datos y realizar muchas otras tareas específicas de Visual FoxPro.

La tabla siguiente muestra las categorías generales de llamadas a la API disponibles en Visual FoxPro. Para obtener detalles acerca de funciones particulares de la API, vea Rutinas de biblioteca API ordenadas alfabéticamente o Rutinas de biblioteca API ordenadas por categoría.

Para usar las rutinas de la API de Visual FoxPro, tiene que incluir el archivo Pro_ext.h, disponible en el directorio API de Visual FoxPro. Este archivo incluye los prototipos para las funciones y estructuras que le permiten compartir información con Visual FoxPro.

Si está programando un control ActiveX, también tiene que agregar llamadas para inicializar y borrar la API.

Para agregar rutinas de la API de Visual FoxPro a su objeto ActiveX

  1. Use #INCLUDE para incluir el archivo Pro_ext.h junto con otros archivos de encabezado necesarios.

  2. En el Constructor (método Init) del control, llame a _OCXAPI( ) para inicializar la interfaz para comunicarse con Visual FoxPro mediante este código:

    _OCXAPI(AfxGetInstanceHandle(),DLL_PROCESS_ATTACH);
    
  3. Incluya llamadas a la API de Visual FoxPro como lo requiera su objeto.

  4. En el Destructor (método Destroy) del objeto, vuelva a llamar a _OCXAPI( ) para liberar el proceso creado en el Constructor, mediante este código:

    _OCXAPI(AfxGetInstanceHandle(),DLL_PROCESS_DETACH);
    

Para ver un ejemplo de archivo .ocx que incluya llamadas a la API de Visual FoxPro, vea Foxtlib.ocx. Para ver un ejemplo de biblioteca .fll que incluya llamadas a la API de Visual FoxPro, vea los programas de ejemplo que se encuentran en el directorio Api\Samples y que tengan la extensión C: EVENT.C, HELLO.C, etc.

Si usa llamadas a la API de Visual FoxPro en su control ActiveX, su objeto COM o su biblioteca .FLL, el código que contiene las llamadas es incompatible con otras aplicaciones. Es posible que entonces desee generar una o más pruebas en el programa para determinar si Visual FoxPro puede llamar al objeto.

Por ejemplo, cuando crea un control ActiveX con Microsoft Foundation Classes, puede cambiar el código del constructor del control para que incluya una prueba y avise al usuario si se ha llamado al control desde un programa distinto de Visual FoxPro:

if (!_OCXAPI(AfxGetInstanceHandle(),DLL_PROCESS_ATTACH))
{
   ::MessageBox(0,"This OCX can only be hosted by Visual Foxpro","",0);
      //Here you can do whatever you want when the host isn't VFP:
      // you might want to reject loading or you 
      // might want to set a property
      // saying that the host isn't VFP and the control will use other 
      // means to achieve it's purpose.
}

Si crea un control ActiveX con Microsoft ActiveX Template Library, utilice el código siguiente:

if (!_OCXAPI(_Module.GetModuleInstance(),DLL_PROCESS_ATTACH))
{
   ::MessageBox(0,"This OCX can only be hosted by Visual Foxpro","",0);
      //Here you can do whatever you want when the host isn't VFP:
      // you might want to reject loading or you 
      // might want to set a property
      // saying that the host isn't VFP and the control will use other 
      // means to achieve it's purpose.
}

En este ejemplo, el control no finaliza y seguirá ejecutándose después de que el usuario haya recibido el mensaje. La estrategia que elija dependerá de cómo crea que se va a usar el control. Por ejemplo, si detecta que se está usando el control fuera de Visual FoxPro, puede establecer un indicador que realiza una prueba en cada punto del control donde llama a la API de Visual FoxPro. Si el indicador muestra que el control está fuera de Visual FoxPro, puede ramificar la llamada de la API como forma alternativa de realizar la misma tarea.

Vea también

Crear una biblioteca FLL básica | Acceso a la API de Visual FoxPro | Transmitir y recibir parámetros | Devolver un valor a Visual FoxPro | Ampliar Visual FoxPro con bibliotecas externas | Creación de bibliotecas API